残念ながら、ネストされた形式で完全な深さを取得することはできません。ビューの使用はその操作を実行できる回避策ですが、必要な埋め込みレベルごとに新しいビューを作成する必要があります。代わりに、ルートレベルから始めて、深さを指定せずにgraphLookupを実行することを検討します。アプリケーションレベルでツリーを計算する前に、1つのクエリですべての階層をフェッチします。
これは次のようになります:
db.node.aggregate([
{ $match: {
parentId: null
}},
{ $graphLookup: {
from: "node",
startWith: "$nodeId",
connectFromField: "nodeId",
connectToField: "parentId",
depthField: "depth",
as: "children"
}}
]);
これにより、階層全体を一度にフェッチできるようになるはずです。次に、「children」配列にある情報から、アプリケーションのツリーを計算する必要があります。