MongoDB एग्रीगेशन में $replaceRoot का उपयोग करें। $replaceRoot इनपुट डॉक्यूमेंट को निर्दिष्ट डॉक्यूमेंट से बदल देता है। ऑपरेशन इनपुट डॉक्यूमेंट के सभी मौजूदा फील्ड्स को बदल देता है, जिसमें _id फील्ड भी शामिल है। आइए एक कलेक्शन बनाते हैं:
> db.demo733.insertOne( { "SubjectDetails": [ { SubjectName:"MongoDB", "Marks":85 }, { SubjectName:"MySQL", "Marks":90 }, { SubjectName:"PL/SQL", "Marks":98 } ] } ); { "acknowledged" : true, "insertedId" : ObjectId("5eac6e6156e85a39df5f6342") }
find() से सभी डॉक्यूमेंट्स देखें:
> db.demo733.find();
आउटपुट:
{ "_id" : ObjectId("5eac6e6156e85a39df5f6342"), "SubjectDetails" : [ { "SubjectName" : "MongoDB", "Marks" : 85 }, { "SubjectName" : "MySQL", "Marks" : 90 }, { "SubjectName" : "PL/SQL", "Marks" : 98 } ] }
एम्बेडेड डॉक्यूमेंट्स की सरणी को पैरेंट में ले जाकर की/वैल्यू बदलने के लिए aggregation पाइपलाइन:
> db.demo733.aggregate([ ... { $replaceRoot: { newRoot: { $mergeObjects: [ { _id: "$_id" }, { $arrayToObject: { $map: { input: "$SubjectDetails", in: [ "$$this.SubjectName", "$$this.Marks" ] } } } ] } } } ... ]).pretty()
परिणाम:
{ "_id" : ObjectId("5eac6e6156e85a39df5f6342"), "MongoDB" : 85, "MySQL" : 90, "PL/SQL" : 98 }