जब आपके पास उप-दस्तावेज़ में कई, कई फ़ील्ड हैं और कभी-कभी इसे नए क्षेत्रों के साथ अद्यतन किया जाता है, तो प्रक्षेपण एक व्यवहार्य विकल्प नहीं है। सौभाग्य से, 3.4 के बाद से, MongoDB के पास $replaceRoot नामक एक नया ऑपरेटर है। ।
आपको बस अपनी पाइपलाइन के अंत में एक नया चरण जोड़ना है।
db.getCollection('sample').aggregate([
{
$replaceRoot: {newRoot: "$command"}
},
{
$project: {score: 0 } //exclude score field
}
])
यह आपको वांछित आउटपुट देगा।
ध्यान दें कि एकत्रीकरण के मामले में (विशेषकर $group<के बाद /ए> स्टेज) 'कमांड' दस्तावेज़ एक सरणी हो सकता है और इसमें कई दस्तावेज़ हो सकते हैं। इस मामले में आपको $unwind करना होगा सरणी सबसे पहले $replaceRoot ।