Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Modela estructuras arbóreas con un arreglo de ancestros

Esta página describe un modelo de datos que describe una estructura similar a un árbol en documentos de MongoDB usando referencias a nodos padres y una matriz que almacena todos los ancestros.

El patrón arreglo of Ancestors almacena cada nodo del árbol en un documento; además del nodo del árbol, el documento almacena en un arreglo la(s) ID de los antecesores o la ruta del nodo.

Considera la siguiente jerarquía de categorías:

Modelo de datos de árbol para una jerarquía de categorías de muestra.

El siguiente ejemplo modela el árbol usando un arreglo de Antepasados. Además de lo ancestors campo, estos documentos también almacenan la referencia a la categoría principal inmediata en el campo parent:

db.categories.insertMany( [
{ _id: "MongoDB", ancestors: [ "Books", "Programming", "Databases" ], parent: "Databases" },
{ _id: "dbm", ancestors: [ "Books", "Programming", "Databases" ], parent: "Databases" },
{ _id: "Databases", ancestors: [ "Books", "Programming" ], parent: "Programming" },
{ _id: "Languages", ancestors: [ "Books", "Programming" ], parent: "Programming" },
{ _id: "Programming", ancestors: [ "Books" ], parent: "Books" },
{ _id: "Books", ancestors: [ ], parent: null }
] )
  • La consulta para recuperar los ancestros o la ruta de un nodo es rápida y sencilla:

    db.categories.findOne( { _id: "MongoDB" } ).ancestors
  • Puedes crear un índice en el campo ancestors para permitir una búsqueda rápida a través de los nodos ancestros:

    db.categories.createIndex( { ancestors: 1 } )
  • Puede realizar una query por el campo ancestors para encontrar a todos sus descendientes:

    db.categories.find( { ancestors: "Programming" } )

El patrón arreglo de Ancestros proporciona una solución rápida y eficiente para encontrar los descendientes y los ancestros de un nodo mediante la creación de un índice en los elementos del campo de ancestros. Esto hace que arreglo de Ancestros sea una buena opción para trabajar con subárboles.

El patrón arreglo de Antepasados es un poco más lento que el patrón Caminos Materializados, pero es más sencillo de usar.

Volver

Referencias de los hijos

En esta página