MongoDB 3.4 से शुरू करके, हम इसे एग्रीगेशन फ्रेमवर्क के साथ कर सकते हैं।
हमारी पाइपलाइन में पहला और सबसे महत्वपूर्ण चरण है $graphLookup
मंच। $graphLookup
हमें "पैरेंट" और "नाम" फ़ील्ड पर पुनरावर्ती मिलान करने की अनुमति देता है। परिणामस्वरूप, हमें प्रत्येक "नाम" के पूर्वज मिलते हैं।
पाइपलाइन में अगला चरण $match
है
वह चरण जहां हम केवल उस "नाम" का चयन करते हैं जिसमें हम रुचि रखते हैं।
अंतिम चरण है $addFields
या $project
वह चरण जहां हम $map
सरणी ऑपरेटर।
बेशक $reverseArray
के साथ
ऑपरेटर हम अपने एरे को उलट दें
अपेक्षित परिणाम प्राप्त करने के लिए।
db.collection.aggregate(
[
{ "$graphLookup": {
"from": "collection",
"startWith": "$parent",
"connectFromField": "parent",
"connectToField": "name",
"as": "ancestors"
}},
{ "$match": { "name": "D" } },
{ "$addFields": {
"ancestors": {
"$reverseArray": {
"$map": {
"input": "$ancestors",
"as": "t",
"in": { "name": "$$t.name" }
}
}
}
}}
]
)