Nous pouvons définir le soi-disant foreign key
dans MongoDB. Cependant, nous devons maintenir l'intégrité des données PAR NOUS-MÊMES . Par exemple,
student
{
_id: ObjectId(...),
name: 'Jane',
courses: ['bio101', 'bio102'] // <= ids of the courses
}
course
{
_id: 'bio101',
name: 'Biology 101',
description: 'Introduction to biology'
}
El courses
Le champ contient _id
de cours. Il est facile de définir une relation de type "un à plusieurs". Cependant, si nous voulons récupérer les noms de cours des étudiants Jane
nous devons effectuer une autre opération pour récupérer l'adresse de l'utilisateur. course
document via _id
.
Si le cours bio101
est supprimée, nous devons effectuer une autre opération pour mettre à jour le fichier courses
dans le champ student
document.
Plus : Conception des schémas de MongoDB
La nature typée document de MongoDB permet de définir les relations de manière flexible. Pour définir une relation de type un à plusieurs :
Document incorporé
- Convient pour une à deux personnes.
- Avantage : il n'est pas nécessaire d'effectuer des requêtes supplémentaires sur un autre document.
- Inconvénient : ne peut pas gérer individuellement l'entité des documents intégrés.
Ejemplo:
student
{
name: 'Kate Monster',
addresses : [
{ street: '123 Sesame St', city: 'Anytown', cc: 'USA' },
{ street: '123 Avenue Q', city: 'New York', cc: 'USA' }
]
}
Référencement des enfants
Comme le student
/ course
exemple ci-dessus.
Référencement des parents
Convient pour un à plusieurs millions, comme les messages du journal.
host
{
_id : ObjectID('AAAB'),
name : 'goofy.example.com',
ipaddr : '127.66.66.66'
}
logmsg
{
time : ISODate("2014-03-28T09:42:41.382Z"),
message : 'cpu is on fire!',
host: ObjectID('AAAB') // Reference to the Host document
}
Virtuellement, un host
est le parent d'un logmsg
. Référence à la host
id permet de gagner beaucoup d'espace étant donné que les messages du journal sont des squillions.
Références :
- 6 règles d'or pour la conception de schémas MongoDB : 1ère partie
- 6 règles d'or pour la conception de schémas MongoDB : Partie 2
- 6 règles d'or pour la conception de schémas MongoDB : 3ème partie
- Modélisation des relations un-à-plusieurs avec des références de documents
12 votes
Vous pensez de manière relationnelle, au lieu d'être orienté vers les documents. :P
11 votes
Pourquoi utilisez-vous MongoDB si vous voulez une base de données relationnelle ?
63 votes
:D J'essaie de comprendre la méthode orientée vers les documents ; comment puis-je résoudre cette tâche ?
1 votes
Si vous voulez la réponse à la façon de penser orientée vers les documents, voyez stackoverflow.com/a/18637581/80428 . La réponse acceptée actuellement fonctionne mais consiste à adapter une base de données relationnelle à un magasin de documents, ce qui n'est pas le but de NoSQL.