Rujukan pangkalan data MongoDB
Dalam perhubungan MongoDB bab sebelumnya kami menyebut rujukan MongoDB untuk menyeragamkan dokumen struktur data.
Terdapat dua jenis rujukan MongoDB:
Rujukan Manual (Rujukan Manual)
DBRefs
DBRefs vs Manual Rujukan
Pertimbangkan senario di mana kami menyimpan alamat yang berbeza (alamat rumah, alamat pejabat, alamat surat-menyurat, dll.) dalam koleksi yang berbeza (alamat_rumah, alamat_pejabat, alamat_mel. , dsb.) alamat, dsb.).
Dengan cara ini, kita juga perlu menentukan koleksi apabila memanggil alamat yang berbeza Jika dokumen merujuk kepada dokumen daripada berbilang koleksi, kita harus menggunakan DBRefs.
Gunakan DBRefs
Bentuk DBRef:
{ $ref : , $id : , $db : }
Maksud tiga medan ialah:
$ ref : Nama koleksi
$id: id rujukan
$db: nama pangkalan data, parameter pilihan
Dalam contoh berikut, dokumen data pengguna menggunakan DBRef, dan alamat medan ialah:
{ "_id":ObjectId("53402597d852426020000002"), "address": { "$ref": "address_home", "$id": ObjectId("534009e4d852427820000002"), "$db": "w3cschoolcc"}, "contact": "987654321", "dob": "01-01-1991", "name": "Tom Benzamin" }
alamat Medan DBRef menentukan bahawa dokumen alamat yang dirujuk ialah pangkalan data w3cschoolcc di bawah koleksi alamat_rumah, dan idnya ialah 534009e4d852427820000002.
Dalam kod berikut, kami menyatakan parameter $ref (address_home collection) untuk mencari maklumat alamat pengguna bagi id yang ditentukan dalam koleksi:
>var user = db.users.findOne({"name":"Tom Benzamin"}) >var dbRef = user.address >db[dbRef.$ref].findOne({"_id":(dbRef.$id)})
Contoh di atas mengembalikan data alamat dalam koleksi alamat_rumah:
{ "_id" : ObjectId("534009e4d852427820000002"), "building" : "22 A, Indiana Apt", "pincode" : 123456, "city" : "Los Angeles", "state" : "California" }