इसके लिए aggregate() के साथ $group का उपयोग करें।
नमूना डेटा बनाना (डुप्लिकेट IDs के साथ)
> db.demo627.insertOne({id:101,"Name":"Chris","Marks":54});
> db.demo627.insertOne({id:102,"Name":"Bob","Marks":74});
> db.demo627.insertOne({id:101,"Name":"Chris","Marks":87});
> db.demo627.insertOne({id:102,"Name":"Mike","Marks":70});
सभी दस्तावेज़ देखना
> db.demo627.find();
{ "id" : 101, "Name" : "Chris", "Marks" : 54 }
{ "id" : 102, "Name" : "Bob", "Marks" : 74 }
{ "id" : 101, "Name" : "Chris", "Marks" : 87 }
{ "id" : 102, "Name" : "Mike", "Marks" : 70 }
मल्टीपल कॉलम द्वारा ग्रुप करके कुल मार्क्स जोड़ने की क्वेरी
> db.demo627.aggregate([
{ "$group": {
"_id": { "id": "$id", "Name": "$Name" },
"Marks": { "$sum": "$Marks" }
}},
{ "$group": {
"_id": { "id": "$_id.id", "Name": "$_id.Name" },
"TotalMarks": { "$sum": "$Marks" }
}}
], { "allowDiskUse": true } );
परिणाम:
{ "_id" : { "id" : 101, "Name" : "Chris" }, "TotalMarks" : 141 }
{ "_id" : { "id" : 102, "Name" : "Bob" }, "TotalMarks" : 74 }
{ "_id" : { "id" : 102, "Name" : "Mike" }, "TotalMarks" : 70 }
व्याख्या: पहला $group id और Name के संयोजन द्वारा समूहित करता है (Chris के दो रिकॉर्ड 54+87=141)। दूसरा $group समान संरचना बनाए रखता है। ध्यान दें: id 102 के दो अलग नाम (Bob, Mike) हैं, इसलिए वे अलग-अलग समूह बनाते हैं।