इसके लिए MongoDB एग्रीगेशन में $group का उपयोग करें।
नमूना डेटा बनाना
> db.demo639.insertOne( { "_id": 1, "CountryName": "US", "Info1": { "Name": "Chris", "SubjectName": "MySQL", "Marks": 78 }, "Info2": { "Name": "Chris", "SubjectName": "MySQL", "Marks": 78 } } );
> db.demo639.insertOne( { "_id": 2, "CountryName": "UK", "Info1": { "Name": "Chris", "SubjectName": "MySQL", "Marks": 79 }, "Info2": { "Name": "Chris", "SubjectName": "MySQL", "Marks": 88 } } );
सभी दस्तावेज़ देखना
> db.demo639.find();
{ "_id" : 1, "CountryName" : "US", "Info1" : { "Name" : "Chris", "SubjectName" : "MySQL", "Marks" : 78 }, "Info2" : { "Name" : "Chris", "SubjectName" : "MySQL", "Marks" : 78 } }
{ "_id" : 2, "CountryName" : "UK", "Info1" : { "Name" : "Chris", "SubjectName" : "MySQL", "Marks" : 79 }, "Info2" : { "Name" : "Chris", "SubjectName" : "MySQL", "Marks" : 88 } }
$group के साथ एग्रीगेशन क्वेरी
> db.demo639.aggregate({$group : {_id : {Name1:"$Info1.Name",Name2:"$Info2.Name"}, Marks:{$first:"$Info2.Marks"}, Marks:{$sum:"$Info2.Marks"}}}).pretty();
परिणाम:
{ "_id" : { "Name1" : "Chris", "Name2" : "Chris" }, "Marks" : 166 }
व्याख्या: $group Info1.Name और Info2.Name के संयोजन द्वारा समूहित करता है। $sum: "$Info2.Marks" दोनों दस्तावेज़ों के Info2.Marks को जोड़ता है (78 + 88 = 166)। नोट: क्वेरी में दो "Marks" फील्ड हैं - दूसरा पहले को ओवरराइट करता है।