MongoDB एग्रीगेशन में $match और $group का उपयोग करके योग करना
निर्दिष्ट मानदंडों से मेल खाने वाले डॉक्यूमेंट्स के लिए किसी संख्यात्मक फ़ील्ड का योग निकालने के लिए, एग्रीगेशन पाइपलाइन में $match (फ़िल्टर) के बाद $group के साथ $sum एक्यूमुलेटर का उपयोग करें।
नमूना डेटा
> db.demo329.insertOne({"Name": "Chris", "Age": 21, "Marks": 45});
{ "acknowledged": true, "insertedId": ObjectId("5e516f28f8647eb59e56207d") }
> db.demo329.insertOne({"Name": "David", "Age": 21, "Marks": 56});
{ "acknowledged": true, "insertedId": ObjectId("5e516f28f8647eb59e56207e") }
> db.demo329.insertOne({"Name": "Mike", "Age": 21, "Marks": 78});
{ "acknowledged": true, "insertedId": ObjectId("5e516f29f8647eb59e56207f") }
> db.demo329.insertOne({"Name": "David", "Age": 21, "Marks": 89});
{ "acknowledged": true, "insertedId": ObjectId("5e516f29f8647eb59e562080") }
एग्रीगेशन: नाम "David" और उम्र 21 के लिए कुल अंक
> db.demo329.aggregate([
{
$match: {
$and: [{'Name': 'David'}, {Age: 21}]
}
},
{
$group: {
_id: null,
TotalMarks: {$sum: "$Marks"}
}
}
]);
परिणाम
{ "_id": null, "TotalMarks": 145 }
दोनों "David" डॉक्यूमेंट्स (56 + 89 = 145) का योग निकाला गया। _id: null सभी मिलान वाले डॉक्यूमेंट्स को एक ही समूह में रखता है। आप _id: "$Name" का उपयोग करके प्रत्येक नाम के लिए अलग-अलग योग भी प्राप्त कर सकते हैं।