MongoDB può memorizzare documenti secondari:
Node
{
"value" : "root"
"children" : [ { "value" : "child1", "children" : [ ... ] },
{ "value" : "child2", "children" : [ ... ] } ]
}
Comunque, io non consiglio di utilizzare documenti secondari per strutture ad albero o tutto ciò che è piuttosto complesso. I documenti secondari non sono cittadini di primo livello; non sono oggetti da collezione.
Ad esempio, si supponga di voler essere in grado di trovare rapidamente i nodi con un determinato valore. Attraverso un indice su value
, tale ricerca sarebbe veloce. Tuttavia, se il valore è in un documento secondario, non verrà indicizzato perché non è un valore di un elemento di raccolta.
Pertanto, di solito è meglio fare la serializzazione manualmente e memorizzare un elenco di ID invece:
Node
{
"_id" : ObjectId("..."),
"parentId" : ObjectId("..."), // or null, for root
}
Dovrete fare manualmente alcuni dei serializzazione per andare a prendere gli ID del rispettivo elemento.
Suggerimento Supponiamo di voler recuperare un intero ramo dell'albero. Invece di memorizzare solo l'ID controllante diretta, è possibile memorizzare tutti antenato ids invece:
"ancestorIds": [id1, id2, id3]