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

MongoDB एग्रीगेशन: ऐरे में ऑब्जेक्ट की व्यक्तिगत प्रॉपर्टीज का योग

MongoDB में ऐरे के ऑब्जेक्ट्स की प्रॉपर्टीज का योग

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

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

> db.demo131.insertOne(
    {
        "_id": 101,
        "Details": [
            { "PlayerScore": 500, "PlayerName": "Chris" },
            { "PlayerScore": 400, "PlayerName": "David" }
        ]
    }
);
{ "acknowledged": true, "insertedId": 101 }
> db.demo131.insertOne(
    {
        "_id": 102,
        "Details": [
            { "PlayerScore": 600, "PlayerName": "Chris" },
            { "PlayerScore": 200, "PlayerName": "David" }
        ]
    }
);
{ "acknowledged": true, "insertedId": 102 }

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

> db.demo131.find();
{ "_id": 101, "Details": [ { "PlayerScore": 500, "PlayerName": "Chris" }, { "PlayerScore": 400, "PlayerName": "David" } ] }
{ "_id": 102, "Details": [ { "PlayerScore": 600, "PlayerName": "Chris" }, { "PlayerScore": 200, "PlayerName": "David" } ] }

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

> db.demo131.aggregate([
    { $unwind: "$Details" },
    {
        $group: {
            _id: "$Details.PlayerName",
            Value: { $sum: "$Details.PlayerScore" }
        }
    },
    {
        $group: {
            _id: 0,
            Details: { $push: { Details: "$_id", Value: "$Value" } }
        }
    },
    {
        $project: { Details: 1, _id: 0 }
    }
])

परिणाम

{ "Details": [ { "Details": "David", "Value": 600 }, { "Details": "Chris", "Value": 1100 } ] }

चरण-दर-चरण व्याख्या

  1. $unwind: Details ऐरे को अलग-अलग डॉक्यूमेंट्स में विभाजित करता है
  2. पहला $group: PlayerName के अनुसार ग्रुप करता है और PlayerScore का योग करता है
    • Chris: 500 + 600 = 1100
    • David: 400 + 200 = 600
  3. दूसरा $group: सभी परिणामों को एक Details ऐरे में संयोजित करता है
  4. $project: केवल Details ऐरे आउटपुट करता है, _id छुपाता है

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

  1. - MongoDB में ऑब्जेक्ट आईडी की सरणी पर $lookup कैसे करें?

    MongoDB में $lookup का उपयोग करके ऑब्जेक्ट आईडी की सरणी वाले फील्ड पर लेफ्ट आउटर जॉइन करने के लिए, let के साथ सब-पाइपलाइन सिंटैक्स का उपयोग करें ताकि सरणी वेरिएबल बांध सके और $in के साथ $match कर सके। उदाहरण: दो संग्रह संग्रह 1 (demo395): उपयोगकर्ता दस्तावेज़ > db.demo395.insertOne({Name:Chris})

  1. - MongoDB में ऐरे के आधार पर दस्तावेज़ कैसे फ़िल्टर करें?

    ऐरे के आधार पर दस्तावेज़ फ़िल्टर करने के लिए $elemMatch का उपयोग करें। $elemMatch ऑपरेटर उन दस्तावेज़ों से मेल खाता है जिनमें एक ऐरे फ़ील्ड होता है। आइए दस्तावेज़ों के साथ एक संग्रह बनाएं: > db.demo453.insertOne( ... { _id: 101, details: [ { Name: "David", Marks: 60 }, { Name: "M

  1. - MongoDB क्वेरी: इंडेक्स N पर ऐरे ऑब्जेक्ट अपडेट करें

    MongoDB में ऐरे ऑब्जेक्ट अपडेट करने के लिए update() का उपयोग करें। डॉट नोटेशन का उपयोग भी आवश्यक है। आइए दस्तावेज़ों के साथ एक संग्रह बनाएं: > db.demo489.insertOne( ... { ... ... ...    details : [{ ...       id : 101, ...       "Info1" : { ... &