MongoDB mogą przechowywać Dokumenty podrzędne:
Node
{
"value" : "root"
"children" : [ { "value" : "child1", "children" : [ ... ] },
{ "value" : "child2", "children" : [ ... ] } ]
}
Jednak nie polecam używać poddokumenty dla struktur drzewiastych lub czegoś, co jest dość skomplikowane. Poddokumenty nie są obywatelami pierwszego poziomu; nie są przedmiotami kolekcji.
Załóżmy na przykład, że chcesz szybko znaleźć węzły o zadanej wartości. Dzięki indeksowi pod numerem value
wyszukiwanie to byłoby szybkie. Jeśli jednak wartość znajduje się w poddokumentach, nie będzie ona indeksowana, ponieważ nie jest wartością elementu kolekcji.
Dlatego to zwykle lepiej zrobić serializacji ręcznie i zapisać listę identyfikatorów zamiast:
Node
{
"_id" : ObjectId("..."),
"parentId" : ObjectId("..."), // or null, for root
}
Będziesz musiał zrobić kilka serializacji ręcznie pobrać identyfikatory danego elementu.
Wskazówka Załóżmy, że chcesz pobrać całą gałąź drzewa. Zamiast przechowywać tylko bezpośrednie id rodzica, można przechowywać wszystko przodek ids zamiast:
"ancestorIds": [id1, id2, id3]