Peut une collection MongoDB ont à l'intérieur une autre collection?
J'ai besoin de stocker un appel récursif de l'arbre structure. Une liste liée.
Si tous les objets sont les mêmes. Chacune dispose d'un pointeur à un objet parent, et chacun dispose d'une panoplie d'objets enfants.
Puis-je stocker une telle structure dans Mongo.
c'est à dire Un Mongo collection de parent d'objets, chaque objet contient en son sein une Mongo collection d'objets enfants.
$a = $MyCollection->findOne(**some conditions)->Childs->find(...)
OriginalL'auteur Itay Moav -Malimovka | 2011-12-17
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas stocker des collections en collections. Mais vous pouvez stocker l'id d'objets de référence dans d'autres collections. Vous devez résoudre l'id du document ou de l'élément et ensuite si cet élément stocke plus les id que vous auriez besoin pour résoudre ces sur et sur. Sont des Documents destinés à être riche et de dupliquer les données, mais dans les docs elles expliquent que, au lieu d'enrobage, vous pouvez simplement utiliser les id
OriginalL'auteur jdi
MongoDB peut stocker les sous-documents:
Cependant, je ne recommande pas d'utiliser des sous-documents pour les structures en arbre ou quelque chose qui est assez complexe. Les sous-documents ne sont pas de premier niveau citoyens; ils ne sont pas les éléments de la collection.
Par exemple, supposons que vous vouliez être en mesure de trouver rapidement les nœuds avec une valeur donnée. Grâce à un index sur
value
, cette recherche serait rapide. Toutefois, si la valeur est dans un sous-document, il ne sera pas indexé parce que ce n'est pas une collection de valeur de l'élément.Par conséquent, il est généralement préférable d'effectuer la sérialisation manuellement et de stocker une liste d'id à la place:
Vous devrez faire de la sérialisation manuellement pour récupérer chaque élément à l'ids.
Soupçon
Supposons que vous souhaitez récupérer l'ensemble d'une branche de l'arbre. Au lieu de stocker seulement le parent direct id, vous pouvez stocker tous ancêtre id à la place:
"ancestorIds": [id1, id2, id3]
OriginalL'auteur mnemosyn