Docs Menu
Docs Home
/ /
Estructuras de árbol

Estructuras de árboles de modelos con una matriz de ancestros

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

El patrón Matriz de Ancestros almacena cada nodo de árbol en un documento; además del nodo de árbol, el documento almacena en una matriz los identificadores de los ancestros o la ruta del nodo.

Considere la siguiente jerarquía de categorías:

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

El siguiente ejemplo modela el árbol utilizando una matriz de ancestros. Además de... ancestors campo, estos documentos también almacenan la referencia a la categoría padre 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
  • Puede crear un índice en el campo ancestors para permitir una búsqueda rápida por parte de los nodos ancestrales:

    db.categories.createIndex( { ancestors: 1 } )
  • Puedes consultar por el campo ancestors para encontrar todos sus descendientes:

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

El patrón "Arreglo de Ancestros" ofrece una solución rápida y eficiente para encontrar los descendientes y ancestros de un nodo mediante la creación de un índice en los elementos del campo "ancestros". Esto lo convierte en una excelente opción para trabajar con subárboles.

El patrón Matriz de Ancestros es ligeramente más lento que el patrón Caminos Materializados, pero es más sencillo de usar.

Volver

Referencias infantiles

En esta página