MongoDB एग्रीगेशन: नेस्टेड सब-डॉक्यूमेंट फ़ील्ड का योग ($sum)
गहरे नेस्टेड फ़ील्ड के वैल्यू का योग निकालने के लिए एग्रीगेशन पाइपलाइन में $group और $sum का उपयोग करें।
कलेक्शन बनाएं और डॉक्यूमेंट इन्सर्ट करें
> db.summingSubDocumentDemo.insertOne({_id: 101, "CustomerDetails": {"CustomerPurchase": {"CustomerPurchaseAmount": 2000}}});
{ "acknowledged": true, "insertedId": 101 }
> db.summingSubDocumentDemo.insertOne({_id: 102, "CustomerDetails": {"CustomerPurchase": {"CustomerPurchaseAmount": 3000}}});
{ "acknowledged": true, "insertedId": 102 }
> db.summingSubDocumentDemo.insertOne({_id: 103, "CustomerDetails": {"CustomerPurchase": {"CustomerPurchaseAmount": 5000}}});
{ "acknowledged": true, "insertedId": 103 }
सभी डॉक्यूमेंट देखें
> db.summingSubDocumentDemo.find().pretty();
{ "_id": 101, "CustomerDetails": {"CustomerPurchase": {"CustomerPurchaseAmount": 2000}} }
{ "_id": 102, "CustomerDetails": {"CustomerPurchase": {"CustomerPurchaseAmount": 3000}} }
{ "_id": 103, "CustomerDetails": {"CustomerPurchase": {"CustomerPurchaseAmount": 5000}} }
सब-डॉक्यूमेंट फ़ील्ड का योग निकालें
> db.summingSubDocumentDemo.aggregate([
{$group: {
_id: "",
totalAmount: {$sum: "$CustomerDetails.CustomerPurchase.CustomerPurchaseAmount"}
}},
{$project: {_id: 0, totalAmount: 1}}
]);
{ "totalAmount": 10000 }
पाइपलाइन समझें
$group:_id: ""- सभी डॉक्यूमेंट को एक ग्रुप में (नल/खाली स्ट्रिंग)totalAmount: {$sum: "$path.to.field"}- नेस्टेड पथ से वैल्यू जोड़ता है
$project:_id: 0- _id छुपाएंtotalAmount: 1- केवल कुल दिखाएं
डॉट नोटेशन पथ
$CustomerDetails.CustomerPurchase.CustomerPurchaseAmount - प्रत्येक लेवल डॉट से अलग
अन्य एक्यूमुलेटर
| ऑपरेटर | कार्य |
|---|---|
$sum | कुल योग |
$avg | औसत |
$min / $max | न्यूनतम/अधिकतम |
$first / $last | पहला/अंतिम |
$addToSet | यूनिक वैल्यू सरणी |