MongoDB एग्रीगेशन में $sum और $cond का उपयोग करके सशर्त गणना करना
MongoDB में $group स्टेज के साथ $sum और $cond का उपयोग करके एक ही ग्रुप में विभिन्न शर्तों के आधार पर गणना करें।
उदाहरण: संग्रह और दस्तावेज़ बनाना
> db.demo406.insertOne({"Score":35});
{ "acknowledged" : true, "insertedId" : ObjectId("5e6f99d5fac4d418a0178599") }
> db.demo406.insertOne({"Score":55});
{ "acknowledged" : true, "insertedId" : ObjectId("5e6f99d8fac4d418a017859a") }
> db.demo406.insertOne({"Score":35});
{ "acknowledged" : true, "insertedId" : ObjectId("5e6f99dcfac4d418a017859b") }
> db.demo406.insertOne({"Score":45});
{ "acknowledged" : true, "insertedId" : ObjectId("5e6f99defac4d418a017859c") }
> db.demo406.insertOne({"Score":65});
{ "acknowledged" : true, "insertedId" : ObjectId("5e6f99e3fac4d418a017859d") }
> db.demo406.insertOne({"Score":45});
{ "acknowledged" : true, "insertedId" : ObjectId("5e6f99e6fac4d418a017859e") }
सभी दस्तावेज़ देखना
> db.demo406.find();
आउटपुट:
{ "_id" : ObjectId("5e6f99d5fac4d418a0178599"), "Score" : 35 }
{ "_id" : ObjectId("5e6f99d8fac4d418a017859a"), "Score" : 55 }
{ "_id" : ObjectId("5e6f99dcfac4d418a017859b"), "Score" : 35 }
{ "_id" : ObjectId("5e6f99defac4d418a017859c"), "Score" : 45 }
{ "_id" : ObjectId("5e6f99e3fac4d418a017859d"), "Score" : 65 }
{ "_id" : ObjectId("5e6f99e6fac4d418a017859e"), "Score" : 45 }
सशर्त योग एकत्रित करने के लिए एग्रीगेशन
> db.demo406.aggregate([
{
"$group": {
"_id": null,
"Score1": {
"$sum": {
"$cond": [{ "$eq": [ "$Score", 35 ] }, 1, 0 ]
}
},
"Score2": {
"$sum": {
"$cond": [{ "$ne": [ "$Score", 35 ] }, 1, 0 ]
}
},
"Score3": {
"$sum": {
"$cond": [{ "$ne": [ "$Score", 59 ] }, "$Score", 0 ]
}
}
}
}
])
आउटपुट:
{ "_id" : null, "Score1" : 2, "Score2" : 4, "Score3" : 280 }
व्याख्या:
- Score1: Score == 35 वाले दस्तावेज़ों की गिनती (2 दस्तावेज़)
- Score2: Score != 35 वाले दस्तावेज़ों की गिनती (4 दस्तावेज़)
- Score3: Score != 59 वाले सभी दस्तावेज़ों के Score का योग (35+55+35+45+65+45 = 280)
सिंटैक्स: {$cond: [condition, trueValue, falseValue]}
उपयोगी पैटर्न:
// गिनती
{$sum: {$cond: [{$eq: ["$field", value]}, 1, 0]}}
// सशर्त योग
{$sum: {$cond: [condition, "$numericField", 0]}}
// औसत
{$avg: {$cond: [condition, "$numericField", "$$REMOVE"]}} // $$REMOVE से बाहर रखें