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

MongoDB में समान ID वाले दस्तावेज़ों के एलिमेंट्स को एग्रीगेट करना

अलग-अलग दस्तावेज़ों में समान ID वाले एलिमेंट्स को ग्रुप करने के लिए MongoDB के $group एग्रीगेशन स्टेज का उपयोग करें।

डेमो डेटा

> db.demo602.insertOne({id:1,Name:"Chris"});
> db.demo602.insertOne({id:2,Name:"David"});
> db.demo602.insertOne({id:1,Name:"Bob"});
> db.demo602.insertOne({id:3,Name:"Mike"});
> db.demo602.insertOne({id:2,Name:"John"});
> db.demo602.insertOne({id:1,Name:"Sam"});

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

db.demo602.aggregate([
    { $group: {
        '_id': {id:"$id", "Name" : "$Name"},
        "count" : { "$sum": 1 }
    }},
    { $group: {
        '_id': "$_id.id",
        "ListOfName" : {"$push" : {Name:"$_id.Name", Frequency: "$count"}}
    }}
], {'allowDiskUse': true});

परिणाम

{ "_id" : 2, "ListOfName" : [ { "Name" : "John", "Frequency" : 1 }, { "Name" : "David", "Frequency" : 1 } ] }
{ "_id" : 3, "ListOfName" : [ { "Name" : "Mike", "Frequency" : 1 } ] }
{ "_id" : 1, "ListOfName" : [ { "Name" : "Sam", "Frequency" : 1 }, { "Name" : "Bob", "Frequency" : 1 }, { "Name" : "Chris", "Frequency" : 1 } ] }

यह क्वेरी प्रत्येक ID के लिए नामों की सूची और उनकी फ्रीक्वेंसी लौटाती है।

  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 } ... ] ... } ...

  1. - MongoDB एग्रीगेशन: सबसे कम मार्क्स वाले दो दस्तावेज प्राप्त करें

    मार्क्स की सॉर्ट की गई सूची प्राप्त करने के लिए $sort का उपयोग करें। केवल दो दस्तावेज प्रदर्शित करने के लिए जिनमें सबसे कम मार्क्स हैं, $limit: 2 का उपयोग करें। आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo709.insertOne({Name:John,Marks:75}); { acknowledged : true, insertedId : ObjectId(

  1. - MongoDB एग्रीगेशन में मल्टीपल फ़ील्ड्स द्वारा काउंट करना

    एक ही पाइपलाइन में कई फ़ील्ड्स पर काउंट करने के लिए $facet का उपयोग करें। डेमो डेटा db.demo721.insertOne({ details1: { id:101 }, details2: { id:101 }, details3: { id:101 } }); db.demo721.insertOne({ details1: { id:101 }, details2: { id:102 }, details3: { id:102 } }); क्वेरी