आपने $unwind
किया है दो बार, तो आपको दो $group
. का उपयोग करने की आवश्यकता है ।
{
$group: {
_id: {
secId: "$_id",
fId: "$Sections.id"
},
Type: {
$first: "$Type"
},
Name: {
$first: "$Name"
},
Header: {
$first: "$Sections.Header"
},
fieldItems: {
$push: "$Sections.FieldItems"
}
}
},
{
$group: {
_id: "$_id.secId",
Type: {
$first: "$Type"
},
Name: {
$first: "$Name"
},
Sections: {
$push: {
id: "$_id.fId",
Header: "$Header",
fieldItems: "$fieldItems"
}
}
}
}
- पहला समूह - चाइल्ड ऑब्जेक्ट्स को ग्रुप करने के लिए। लेकिन टाइप,नाम और हैडर क्रमशः पैरेंट और चाइल्ड ऐरे पर सेट करने की आवश्यकता है।
- दूसरा समूह - मूल वस्तुओं को समूहित करने के लिए। बच्चे को समूहबद्ध करते समय हमें हर स्टैंडअलोन फ़ील्ड मिलता है। यहाँ बस हमें इसे सही क्रम में स्थापित करने की आवश्यकता है।
काम करना मोंगो खेल का मैदान
नोट:जब आप $lookup
. का उपयोग करते हैं , यह एक सरणी प्रदान करेगा। लेकिन कुछ जगहें ऐसी भी होती हैं जिन्हें आप सिर्फ वस्तु के रूप में ही बना लेते हैं। मुझे नहीं पता कि आप एक-से-एक रिश्ते में शामिल होते हैं या नहीं। अगर ऐसा है तो आप प्रक्षेपण में स्थितीय ऑपरेटर
का उपयोग कर सकते हैं या arrayElemAt