MongoDB puede almacenar subdocumentos:
Node
{
"value" : "root"
"children" : [ { "value" : "child1", "children" : [ ... ] },
{ "value" : "child2", "children" : [ ... ] } ]
}
Sin embargo, no recomiendo usar subdocumentos para estructuras de árbol o cualquier cosa que sea bastante compleja. Los subdocumentos no son ciudadanos de primer nivel; no son elementos de colección.
Por ejemplo, supongamos que desea poder encontrar rápidamente los nodos con un valor determinado. A través de un índice en value
, esa búsqueda sería rápida. Sin embargo, si el valor está en un subdocumento, no se indexará porque no es el valor de un elemento de colección.
Por lo tanto, por lo general es mejor hacer la serialización de forma manual y almacenar una lista de identificadores de lugar:
Node
{
"_id" : ObjectId("..."),
"parentId" : ObjectId("..."), // or null, for root
}
Vas a tener que hacer algo de la serialización de forma manual a buscar los identificadores del elemento respectivo.
Sugerencia Supongamos que quiere buscar una rama entera del árbol. En lugar de almacenar sólo el ID de padre directa, puede almacenar todos ancestro ids lugar:
"ancestorIds": [id1, id2, id3]