Overview
Esta página describe un modelo de datos que describe una estructura tipo árbol en los documentos MongoDB almacenando referencias en los nodos padre a los nodos hijos.
Patrón
El patrón Referencias de subproyectos almacena cada nodo de árbol en un documento; además del nodo de árbol, el documento almacena en un arreglo los ID(s) de los nodos hijos.
Considera la siguiente jerarquía de categorías:
El siguiente ejemplo modela el árbol utilizando Referencias de hijos, almacenando la referencia a los hijos del nodo en el campo children:
db.categories.insertMany( [ { _id: "MongoDB", children: [] }, { _id: "dbm", children: [] }, { _id: "Databases", children: [ "MongoDB", "dbm" ] }, { _id: "Languages", children: [] }, { _id: "Programming", children: [ "Databases", "Languages" ] }, { _id: "Books", children: [ "Programming" ] } ] )
La query para recuperar los hijos inmediatos de un nodo es rápida y sencilla:
db.categories.findOne( { _id: "Databases" } ).children Puedes crear un índice en el campo
childrenpara habilitar una búsqueda rápida por los nodos secundarios:db.categories.createIndex( { children: 1 } ) Puedes query un nodo en el campo
childrenpara encontrar su nodo padre, así como sus nodos hermanos:db.categories.find( { children: "MongoDB" } )
El patrón de Referencias de hijos proporciona una solución adecuada para el almacenamiento en árboles, siempre que no sean necesarias operaciones en subárboles. Este patrón también puede proporcionar una solución adecuada para almacenar grafos donde un nodo puede tener múltiples padres.