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

MongoDB में ऐरे मान के आधार पर एग्रीगेट करके विभिन्न डॉक्यूमेंट्स में मानों का योग करें

MongoDB में ऐरे मान के आधार पर एग्रीगेशन

इसके लिए MongoDB में aggregate() का उपयोग करें।

कलेक्शन बनाना

> db.demo126.insertOne(
    {
        "StudentDetails": {
            "Number": 1,
            "OtherDetails": [
                { "Name": "Chris", "Score": 55 }
            ]
        }
    }
);
{ "acknowledged": true, "insertedId": ObjectId("5e304b3068e7f832db1a7f56") }
> db.demo126.insertOne(
    {
        "StudentDetails": {
            "Number": 2,
            "OtherDetails": [
                { "Name": "Chris", "Score": 35 },
                { "Name": "David", "Score": 87 }
            ]
        }
    }
);
{ "acknowledged": true, "insertedId": ObjectId("5e304b3068e7f832db1a7f57") }

सभी डॉक्यूमेंट्स

> db.demo126.find();
{ "_id": ObjectId("5e304b3068e7f832db1a7f56"), "StudentDetails": { "Number": 1, "OtherDetails": [ { "Name": "Chris", "Score": 55 } ] } }
{ "_id": ObjectId("5e304b3068e7f832db1a7f57"), "StudentDetails": { "Number": 2, "OtherDetails": [ { "Name": "Chris", "Score": 35 }, { "Name": "David", "Score": 87 } ] } }

एग्रीगेशन क्वेरी

> db.demo126.aggregate([
    { $unwind: "$StudentDetails.OtherDetails" },
    {
        $group: {
            _id: "$StudentDetails.OtherDetails.Name",
            quantity: { $sum: "$StudentDetails.OtherDetails.Score" }
        }
    }
])

परिणाम

{ "_id": "David", "quantity": 87 }
{ "_id": "Chris", "quantity": 90 }

व्याख्या

  1. $unwind: StudentDetails.OtherDetails ऐरे को अलग-अलग डॉक्यूमेंट्स में फैलाता है
  2. $group: Name के अनुसार ग्रुप करता है (_id: "$StudentDetails.OtherDetails.Name")
  3. $sum: प्रत्येक नाम के लिए Score जोड़ता है
    • Chris: 55 + 35 = 90
    • David: 87

यह पैटर्न नेस्टेड ऐरे में विभिन्न पैरेंट डॉक्यूमेंट्स में बच्चे तत्वों के मानों को जोड़ने के लिए उपयोगी है।

  1. - MongoDB कलेक्शन को ऐरे वैल्यू द्वारा सॉर्ट करें

    MongoDB कलेक्शन को ऐरे वैल्यू द्वारा सॉर्ट करने के लिए, $sort के साथ aggregate() का उपयोग करें। आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo577.insertOne({ student: { details: [ { Name:Chris, Score:45 }, { Name:Bob, Score:33 }, { Name:Davi

  1. - MongoDB में ऐरे के अंदर विशिष्ट फ़ील्ड वैल्यू के आधार पर डॉक्यूमेंट काउंट करना

    एम्बेडेड ऐरे में किसी विशिष्ट फ़ील्ड वैल्यू की घटनाओं को गिनने के लिए $unwind, $match और $group का उपयोग करें। डेमो डेटा > db.demo726.insertOne({ id:101, details: [ { Name:Chris }, { Name:Chris }, { Name:Bob } ] }); क्वेरी db.demo726.aggregate([ { $unwind

  1. - MongoDB दस्तावेज़ों में नल वैल्यूज़ को अनदेखा करना

    ऐरे में null वैल्यूज़ को बाहर करने के लिए $ne: null के साथ $match का उपयोग करें। डेमो डेटा db.demo722.insertOne({ id:101, details: [ { Name: }, { Name: David }, { Name:null }, { Name:Carol } ] }); क्वेरी db.demo722.aggregate([ {$unwind: $details},