Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MongoDB

MongoDB एग्रीगेशन में $sum से सब-डॉक्यूमेंट फ़ील्ड का योग करें

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 }

पाइपलाइन समझें

  1. $group:
    • _id: "" - सभी डॉक्यूमेंट को एक ग्रुप में (नल/खाली स्ट्रिंग)
    • totalAmount: {$sum: "$path.to.field"} - नेस्टेड पथ से वैल्यू जोड़ता है
  2. $project:
    • _id: 0 - _id छुपाएं
    • totalAmount: 1 - केवल कुल दिखाएं

डॉट नोटेशन पथ

$CustomerDetails.CustomerPurchase.CustomerPurchaseAmount - प्रत्येक लेवल डॉट से अलग

अन्य एक्यूमुलेटर

ऑपरेटरकार्य
$sumकुल योग
$avgऔसत
$min / $maxन्यूनतम/अधिकतम
$first / $lastपहला/अंतिम
$addToSetयूनिक वैल्यू सरणी
  1. - MongoDB में विशिष्ट फील्ड द्वारा खोज कैसे करें?

    MongoDB में एक या अधिक फील्ड्स पर दस्तावेज़ फ़िल्टर करने के लिए, find() के साथ क्वेरी ऑब्जेक्ट का उपयोग करें। कई शर्तों को संयोजित करने के लिए $or, $and का उपयोग करें। उदाहरण: नाम और देश वाले दस्तावेज़ > db.demo371.insertOne({Name:David,CountryName:US}); { acknowledged : true, insertedId : Objec

  1. - MongoDB में फील्ड प्रोजेक्ट करना

    MongoDB एग्रीगेशन में $project और $cond का उपयोग करके डायनामिक फील्ड प्रोजेक्शन MongoDB में जब दस्तावेज़ों में अलग-अलग फील्ड नाम हों (जैसे Marks1/Score1), तो $project के साथ $cond और $ifNull का उपयोग करके एकीकृत स्कीमा में प्रोजेक्ट करें। उदाहरण: संग्रह और दस्तावेज़ बनाना > db.demo439.insertOne(

  1. - MongoDB में _id फील्ड छिपाएं

    आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo575.insertOne({id:101,Information:{Name:Chris,Age:21}}); { acknowledged : true, insertedId : ObjectId(5e916a55581e9acd78b427f7) } > db.demo575.insertOne({id:102,Information:{Name:David,Age:20}}); { acknowledged : true, insertedId : ObjectId