Les relations
Les relations dans MongoDB représentent la façon dont divers documents sont logiquement liés les uns aux autres. Les relations peuvent être modélisées via les approches Embedded et Referenced. Ces relations peuvent être de type 1:1, 1:N, N:1 ou N:N.
Considérons le cas du stockage des adresses des utilisateurs. Ainsi, un utilisateur peut avoir plusieurs adresses, ce qui en fait une relation 1:N.
Voici un exemple de la structure d'un document utilisateur.
{
"_id":ObjectId("52ffc33cd85242f436000001"),
"name": "Tom Hanks",
"contact": "987654321",
"dob": "01-01-1991"
}
Voici un exemple de structure d'un document d'adresse.
{
"_id":ObjectId("52ffc4a5d85242602e000000"),
"building": "22 A, Indiana Apt",
"pincode": 123456,
"city": "Los Angeles",
"state": "California"
}
Modélisation des relations incorporées
Dans l'approche intégrée, nous incorporons le document d'adresse dans le document de l'utilisateur.
> db.users.insert({
{
"_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"
}
]
}
})
Cette approche permet de conserver toutes les données connexes dans un seul document, ce qui en facilite l'extraction et la maintenance. L'ensemble du document peut être récupéré en une seule requête comme -
>db.users.findOne({"name":"Tom Benzamin"},{"address":1})
Notez que dans la requête ci-dessus, db et users sont respectivement la base de données et la collection.
L'inconvénient est que si la taille du document intégré continue de croître de manière excessive, cela peut avoir un impact sur les performances de lecture/écriture.
Modélisation des relations référencées
Besoin d'aide ?
Rejoignez notre communauté officielle et ne restez plus seul à bloquer sur un problème !