Niestety nie można uzyskać pełnej głębi w formacie zagnieżdżonym. Korzystanie z widoku to obejście, które pozwala wykonać tę operację, ale musiałbyś utworzyć nowy widok dla każdego poziomu osadzania, którego potrzebujesz. Zamiast tego rozważyłbym wykonanie graphLookup bez podawania głębokości, zaczynając od poziomu głównego, pobranie całej hierarchii w jednym zapytaniu, przed obliczeniem drzewa na poziomie aplikacji.
Wyglądałoby to mniej więcej tak:
db.node.aggregate([
{ $match: {
parentId: null
}},
{ $graphLookup: {
from: "node",
startWith: "$nodeId",
connectFromField: "nodeId",
connectToField: "parentId",
depthField: "depth",
as: "children"
}}
]);
Powinno to pozwolić na pobranie całej hierarchii za jednym razem, więc następnie musisz obliczyć drzewo w swojej aplikacji na podstawie informacji, które będziesz miał w tablicy "dzieci".