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

MongoDB एग्रीगेशन का उपयोग करके विशिष्ट दस्तावेज़ों का योग गणना करें

MongoDB एग्रीगेशन में $match, $unwind, $group, $sum का उपयोग करके सशर्त योग

नेस्टेड ऐरे में विशिष्ट शर्तों को पूरा करने वाले दस्तावेज़ों के फ़ील्ड का योग निकालने के लिए एग्रीगेशन पाइपलाइन का उपयोग करें।

सैंपल डेटा बनाना

> db.calculateSumOfDocument.insertOne({
    "ListOfUsers": ["Carol", "Bob"],
    "UsersDetails": [
        { "FirstUser": "Carol", "TotalLikes": 20 },
        { "FirstUser": "Bob", "TotalLikes": 45 }
    ]
});
> db.calculateSumOfDocument.insertOne({
    "ListOfUsers": ["Carol", "Bob"],
    "UsersDetails": [
        { "FirstUser": "Carol", "TotalLikes": 60 },
        { "FirstUser": "Bob", "TotalLikes": 50 }
    ]
});

दस्तावेज़ देखना

> db.calculateSumOfDocument.find().pretty();

आउटपुट:


एग्रीगेशन: Carol के TotalLikes का योग

> db.calculateSumOfDocument.aggregate([
    { "$match": { "UsersDetails.FirstUser": "Carol" } },      // 1. दस्तावेज़ फ़िल्टर करें
    { "$unwind": "$UsersDetails" },                            // 2. ऐरे फ्लैट करें
    { "$match": { "UsersDetails.FirstUser": "Carol" } },      // 3. फिर से फ़िल्टर करें (unwind के बाद)
    { "$group": {
        "_id": null,
        "total": { "$sum": "$UsersDetails.TotalLikes" }
    }}
]);

आउटपुट:


चरण-दर-चरण स्पष्टीकरण

  1. पहला $match: केवल वे दस्तावेज़ जिनमें Carol का रिकॉर्ड हो (प्रदर्शन के लिए जल्दी फ़िल्टर)
  2. $unwind: UsersDetails ऐरे को डी-कंस्ट्रक्ट करता है
  3. दूसरा $match: केवल Carol के एलिमेंट्स रखता है
  4. $group: सभी Carol के TotalLikes का योग करता है (20 + 60 = 80)

अनुकूलित संस्करण (MongoDB 3.6+)


सिंगल पाइपलाइन में एकाधिक यूज़र्स का योग

आउटपुट: प्रत्येक यूज़र के लिए कुल लाइक्स

  1. - MongoDB एग्रीगेशन: विशिष्ट छात्र के स्कोर का योग कैसे निकालें

    योग निकालने के लिए aggregate() के साथ $sum ऑपरेटर का उपयोग करें। आइए दस्तावेज़ों के साथ एक संग्रह बनाएं: > db.demo434.insertOne({"Name":"Chris","Score":45}); {    "acknowledged" : true,    "insertedId" : ObjectId("5e77160

  1. - MongoDB शेल का उपयोग करके दस्तावेज़ों से विशिष्ट मान वाले आइटम कैसे प्राप्त करें?

    MongoDB शेल में find() से विशिष्ट मान वाले दस्तावेज़ फ़िल्टर करें विशिष्ट मान वाले आइटम प्राप्त करने के लिए, बस find() का उपयोग करें। आइए दस्तावेज़ों के साथ एक संग्रह बनाते हैं: > db.demo563.insertOne({Name:Chris,Age:21,isMarried:true}) { acknowledged : true, insertedId : ObjectId(5e8f546c54b4472

  1. - MongoDB Aggregation - Specific Field Value वाले Documents Fetch करना

    इसके लिए aggregate() का उपयोग करें। मान लें हमें field Age value 21 वाले documents fetch करने हैं। Collection बनाना > db.demo685.insertOne( ... { ... details: ... [ ... { Name:Chris, Age:21 }, ... { Name:David, Age:23 }, ... { Name:Bob, Age:21 } ... ] ... } ...