दुर्भाग्य से, आपको नेस्टेड प्रारूप में पूरी गहराई नहीं मिल सकती है। एक दृश्य का उपयोग करना एक वैकल्पिक हल है जो आपको उस ऑपरेशन को करने देता है, लेकिन आपको प्रत्येक स्तर के एम्बेडिंग के लिए एक नया दृश्य बनाना होगा जिसकी आपको आवश्यकता है। इसके बजाय, मैं गहराई प्रदान किए बिना एक ग्राफ लुकअप करने पर विचार करूंगा, जो रूट स्तर से शुरू होता है, एप्लिकेशन स्तर पर ट्री की गणना करने से पहले, सभी पदानुक्रम को एक ही क्वेरी में लाना।
यह कुछ इस तरह दिखेगा:
db.node.aggregate([
{ $match: {
parentId: null
}},
{ $graphLookup: {
from: "node",
startWith: "$nodeId",
connectFromField: "nodeId",
connectToField: "parentId",
depthField: "depth",
as: "children"
}}
]);
यह आपको एक बार में पूरे पदानुक्रम को लाने देना चाहिए, इसलिए आगे, आपको अपने आवेदन में पेड़ की गणना करने की आवश्यकता है, जो आपके पास "बच्चों" सरणी में होगी।