Référence de la base de données MongoDB
Dans le chapitre précédent Relation MongoDB, nous avons mentionné les références MongoDB pour standardiser les documents de structure de données.
Il existe deux types de références MongoDB :
Références manuelles (Références manuelles)
DBRefs
DBRefs vs Manual Reference
Considérez un scénario dans lequel nous stockons différentes adresses (adresse du domicile, adresse du bureau, adresse postale, etc.) dans différentes collections (address_home, address_office, address_mailing , etc.) adresse, etc.).
De cette façon, nous devons également spécifier la collection lors de l'appel à différentes adresses. Si un document fait référence à des documents de plusieurs collections, nous devons utiliser DBRefs.
Utiliser DBRefs
La forme de DBRef :
{ $ref : , $id : , $db : }
La signification des trois champs est :
$ ref : Nom de la collection
$id : identifiant référencé
$db : nom de la base de données, paramètres facultatifs
Dans l'exemple suivant, le document de données utilisateur utilise DBRef, et l'adresse du champ est :
{ "_id":ObjectId("53402597d852426020000002"), "address": { "$ref": "address_home", "$id": ObjectId("534009e4d852427820000002"), "$db": "w3cschoolcc"}, "contact": "987654321", "dob": "01-01-1991", "name": "Tom Benzamin" }
adresse Le champ DBRef précise que le document d'adresse référencé est la base de données w3cschoolcc sous le adresse_home et l'identifiant est 534009e4d852427820000002.
Dans le code suivant, nous spécifions le paramètre $ref (collection address_home) pour trouver les informations d'adresse utilisateur de l'identifiant spécifié dans la collection :
>var user = db.users.findOne({"name":"Tom Benzamin"}) >var dbRef = user.address >db[dbRef.$ref].findOne({"_id":(dbRef.$id)})
L'exemple ci-dessus renvoie les données d'adresse dans la collection adresse_home :
{ "_id" : ObjectId("534009e4d852427820000002"), "building" : "22 A, Indiana Apt", "pincode" : 123456, "city" : "Los Angeles", "state" : "California" }