Relations MongoDB
Les relations MongoDB représentent les interconnexions logiques entre plusieurs documents.
Les documents peuvent être liés via des intégrations et des références.
Les relations dans MongoDB peuvent être :
1:1 (1 à 1)
1 : N (1 à plusieurs)
N : 1 (plusieurs à 1)
N : N (plusieurs à plusieurs)
Ensuite, considérons la relation entre les utilisateurs et les adresses des utilisateurs.
Un utilisateur peut avoir plusieurs adresses, il s'agit donc d'une relation un-à-plusieurs.
Ce qui suit est la structure simple du document utilisateur :
{ "_id":ObjectId("52ffc33cd85242f436000001"), "name": "Tom Hanks", "contact": "987654321", "dob": "01-01-1991" }
Ce qui suit est la structure simple du document adresse :
{ "_id":ObjectId("52ffc4a5d85242602e000000"), "building": "22 A, Indiana Apt", "pincode": 123456, "city": "Los Angeles", "state": "California" }
Relation intégrée
En utilisant la méthode intégrée, nous pouvons intégrer l'adresse de l'utilisateur dans le document de l'utilisateur :
"_id":ObjectId("52ffc33cd85242f436000001"), "contact": "987654321", "dob": "01-01-1991", "name": "Tom Benzamin", "address": [ { "building": "22 A, Indiana Apt", "pincode": 123456, "city": "Los Angeles", "state": "California" }, { "building": "170 A, Acropolis Apt", "pincode": 456789, "city": "Chicago", "state": "Illinois" }] }
Les données ci-dessus sont enregistrées dans un seul document, qui peut être des données facilement obtenues et conservées. Vous pouvez interroger l'adresse de l'utilisateur comme ceci :
>db.users.findOne({"name":"Tom Benzamin"},{"address":1})
Remarque : dans la requête ci-dessus, db et users représentent des bases de données et des collections.
L'inconvénient de cette structure de données est que si les utilisateurs et les adresses des utilisateurs continuent d'augmenter, la quantité de données continue d'augmenter, ce qui affectera les performances de lecture et d'écriture.
Relation de référence
La relation de référence est une méthode souvent utilisée lors de la conception de bases de données. Cette méthode sépare le document de données utilisateur et le document de données d'adresse utilisateur en référençant l'id du document <. 🎜> champs pour établir des relations.
{ "_id":ObjectId("52ffc33cd85242f436000001"), "contact": "987654321", "dob": "01-01-1991", "name": "Tom Benzamin", "address_ids": [ ObjectId("52ffc4a5d85242602e000000"), ObjectId("52ffc4a5d85242602e000001") ] }Dans l'exemple ci-dessus, le champ
address_ids du document utilisateur contient le tableau ObjectId de l'adresse de l'utilisateur.
Nous pouvons lire l'identifiant d'objet (ObjectId) de ces adresses d'utilisateurs pour obtenir les informations d'adresse détaillées de l'utilisateur. Cette méthode nécessite deux requêtes. La première fois consiste à interroger l'ID d'objet (ObjectId) de l'adresse de l'utilisateur, et la deuxième fois consiste à obtenir les informations d'adresse détaillées de l'utilisateur via l'ID de requête.>var result = db.users.findOne({"name":"Tom Benzamin"},{"address_ids":1}) >var addresses = db.address.find({"_id":{"$in":result["address_ids"]}})