MongoDB Datenbankreferenzen
Im vorherigen Kapitel über MongoDB-Beziehungen haben wir MongoDB-Referenzen erwähnt, um Datenstruktur-Dokumente zu standardisieren.
Es gibt zwei Arten von MongoDB-Referenzen:
- Manuelle Referenzen
- DBRefs
DBRefs vs. manuelle Referenzen
Betrachten Sie folgendes Szenario: Wir speichern verschiedene Adressen (Privatadresse, Büroadresse, Postadresse usw.) in verschiedenen Collections (address_home, address_office, address_mailing usw.).
Auf diese Weise müssen wir beim Zugriff auf verschiedene Adressen auch die Collection angeben. Wenn ein Dokument auf Dokumente aus mehreren Collections verweist, sollten wir DBRefs verwenden.
DBRefs verwenden
DBRef-Format:
{ $ref : , $id : , $db : }
Die Bedeutung der drei Felder ist:
- $ref: Collection-Name
- $id: die referenzierte id
- $db: Datenbankname, optionaler Parameter
Im folgenden Beispiel verwendet das Benutzerdaten-Dokument DBRef für das Feld address:
{
"_id":ObjectId("53402597d852426020000002"),
"address": {
"$ref": "address_home",
"$id": ObjectId("534009e4d852427820000002"),
"$db": "example"},
"contact": "987654321",
"dob": "01-01-1991",
"name": "Tom Benzamin"
}
addressDas DBRef-Feld gibt an, dass sich das referenzierte Adressdokument in der Collection address_home unter der Beispieldatenbank befindet, mit der id 534009e4d852427820000002.
Im folgenden Code geben wir den Parameter $ref an (Collection address_home), um die Adressinformationen des Benutzers mit der angegebenen id in der Collection zu finden:
>var user = db.users.findOne({"name":"Tom Benzamin"})
>var dbRef = user.address
>db[dbRef.$ref].findOne({"_id":(dbRef.$id)})
Das obige Beispiel gibt die Adressdaten in der address_home-Collection zurück:
{
"_id" : ObjectId("534009e4d852427820000002"),
"building" : "22 A, Indiana Apt",
"pincode" : 123456,
"city" : "Los Angeles",
"state" : "California"
}
Weitere Erweiterungen