Overview
Esta página describe un modelo de datos que describe una estructura tipo árbol en los documentos MongoDB almacenando referencias a nodos "padres" en nodos secundarios.
Patrón
El patrón Referencias parentales almacena cada nodo de árbol en un documento; además del nodo de árbol, el documento almacena el ID del nodo parental del nodo.
Considere la siguiente jerarquía de categorías:
El siguiente ejemplo modela el árbol utilizando referencias principales, almacenando la referencia a la categoría principal en el campo parent:
db.categories.insertMany( [ { _id: "MongoDB", parent: "Databases" }, { _id: "dbm", parent: "Databases" }, { _id: "Databases", parent: "Programming" }, { _id: "Languages", parent: "Programming" }, { _id: "Programming", parent: "Books" }, { _id: "Books", parent: null } ] )
La consulta para recuperar el padre de un nodo es rápida y sencilla:
db.categories.findOne( { _id: "MongoDB" } ).parent Puede crear un índice en el campo
parentpara permitir una búsqueda rápida por parte del nodo principal:db.categories.createIndex( { parent: 1 } ) Puede consultar el campo
parentpara encontrar sus nodos secundarios inmediatos:db.categories.find( { parent: "Databases" } ) Para recuperar subárboles,
$graphLookupconsulte.