Estruturas de árvore modelo com referências infantis
Nesta página
Visão geral
Esta página descreve um modelo de dados que descreve uma estrutura semelhante à árvore nos documentos MongoDB armazenando referências nos nós principais para nós secundários.
Padrão
O padrão Referências Filho armazena cada nó de árvore em um documento. Além do nó de árvore, o documento armazena em uma matriz as IDs dos filhos do nó.
Considerar a seguinte hierarquia de categorias:
O exemplo a seguir modela a árvore com Referências filho, armazenando a referência para os filhos do nó no 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" ] } ] )
A query para recuperar os filhos imediatos de um nó é rápida e direta:
db.categories.findOne( { _id: "Databases" } ).children Você pode criar um índice no campo
children
para habilitar a pesquisa rápida pelos nós filhos:db.categories.createIndex( { children: 1 } ) Você pode consultar um nó no campo
children
para localizar seu nó pai, bem como seus irmãos:db.categories.find( { children: "MongoDB" } )
O padrão Referências Filho fornece uma solução adequada para o armazenamento em árvores, desde que nenhuma operação em subárvores seja necessária. Esse padrão também pode fornecer uma solução adequada para armazenar gráficos onde um nó pode ter vários pais.