Skip to content

Latest commit

 

History

History
49 lines (32 loc) · 2.46 KB

modelo-de-estructuras-de-arbol-con-una-matriz-de-antepasados.md

File metadata and controls

49 lines (32 loc) · 2.46 KB

Modelo de estructuras de árbol con una matriz de antepasados

Descripción general

Esta página describe un modelo de datos que describe una estructura en forma de árbol en los documentos de MongoDB utilizando referencias a los nodos principales y una matriz que almacena todos los antepasados.

Patrón

El patrón Array of Ancestors almacena cada nodo del árbol en un documento; Además del nodo del árbol, el documento almacena en una matriz la (s) identificación (es) de los antepasados ​​o la ruta del nodo.

Considere la siguiente jerarquía de categorías:

El siguiente ejemplo modela el árbol usando Array of Ancestors . Además del ancestorscampo, estos documentos también almacenan la referencia a la categoría principal inmediata en el parentcampo:

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 ancestorspara permitir una búsqueda rápida por los nodos ancestros:

    db.categories.createIndex( { ancestors: 1 } )
    
  • Puede consultar por campo ancestorspara encontrar todos sus descendientes:

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

El patrón Array of Ancestors proporciona una solución rápida y eficiente para encontrar los descendientes y los antepasados ​​de un nodo mediante la creación de un índice sobre los elementos del campo de antepasados. Esto hace que Array of Ancestors sea una buena opción para trabajar con subárboles.

El patrón Array of Ancestors es un poco más lento que el patrón Materialized Paths , pero es más sencillo de usar.