Sayangnya, Anda tidak bisa mendapatkan kedalaman penuh dalam format bersarang. Menggunakan tampilan adalah solusi yang memungkinkan Anda melakukan operasi itu, tetapi Anda perlu membuat tampilan baru untuk setiap tingkat penyematan yang Anda butuhkan. Sebagai gantinya, saya akan mempertimbangkan untuk melakukan pencarian grafik tanpa memberikan kedalaman, mulai dari tingkat akar, mengambil semua hierarki dalam satu kueri, sebelum menghitung pohon di tingkat aplikasi.
Ini akan terlihat seperti ini:
db.node.aggregate([
{ $match: {
parentId: null
}},
{ $graphLookup: {
from: "node",
startWith: "$nodeId",
connectFromField: "nodeId",
connectToField: "parentId",
depthField: "depth",
as: "children"
}}
]);
Ini akan memungkinkan Anda mengambil seluruh hierarki sekaligus, jadi selanjutnya, Anda perlu menghitung pohon di aplikasi Anda, dari informasi yang akan Anda miliki di larik "anak".