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

MongoDB एग्रीगेशन: एकाधिक दस्तावेज़ों को ऐरे के साथ सिंगल दस्तावेज़ में बदलें

MongoDB एग्रीगेशन में $group और $push का उपयोग करके दस्तावेज़ों को मर्ज करना

एक ही ग्रुपिंग फ़ील्ड (जैसे id) साझा करने वाले एकाधिक दस्तावेज़ों को एक सिंगल दस्तावेज़ में संयोजित करने के लिए $group के साथ $push का उपयोग करें।

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

> db.demo248.insertOne({"id":101,"Name":"Chris","Age":21,"CountryName":"US"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e46b6651627c0c63e7dba6d") }
> db.demo248.insertOne({"id":101,"Name":"Bob","Age":22,"CountryName":"UK"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e46b6741627c0c63e7dba6e") }
> db.demo248.insertOne({"id":102,"Name":"Mike","Age":20,"CountryName":"AUS"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e46b6811627c0c63e7dba6f") }

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

> db.demo248.find();

आउटपुट:


एग्रीगेशन: id द्वारा ग्रुप करके ऐरे बनाएं

> db.demo248.aggregate([
    {
        $group: {
            _id: "$id",
            details: {
                $push: {
                    id: "$id",
                    Name: "$Name",
                    Age: "$Age",
                    CountryName: "$CountryName"
                }
            }
        }
    }
]);

आउटपुट:


वैकल्पिक: $$ROOT का उपयोग (पूरा दस्तावेज़ पुश करें)

> db.demo248.aggregate([
    { $group: {
        _id: "$id",
        details: { $push: "$$ROOT" }
    }}
]);

उपयोग के मामले

  • वन-टू-मेनी रिलेशनशिप को एम्बेडेड ऐरे में बदलना
  • रिपोर्टिंग के लिए डेटा समेकन
  • API प्रतिक्रियाओं के लिए नेस्टेड संरचना बनाना
  • डुप्लिकेट ग्रुपिंग फ़ील्ड को कम करना

संबंधित ऑपरेटर्स

  • $addToSet - डुप्लिकेट्स के बिना ऐरे (यूनिक मान)
  • $first/$last - सॉर्ट ऑर्डर के आधार पर पहला/आखिरी दस्तावेज़
  • $mergeObjects - ऑब्जेक्ट्स को मर्ज करना (MongoDB 3.6+)
  1. - MongoDB में Single Array Value को String से Replace करना

    Replace करने के लिए $set और positional $ operator का उपयोग करें। Collection बनाना > db.demo564.insertOne({StudentName:[Chris,David,Mike,Sam]}); { acknowledged : true, insertedId : ObjectId(5e90880a39cfeaaf0b97b576) } सभी Documents Display करना > db.demo564.find().pretty(); Output: { _id :

  1. - MongoDB में एम्बेडेड डॉक्यूमेंट की सरणी पर फ़िल्टर क्वेरी कैसे करें?

    इसके लिए MongoDB में aggregate() का उपयोग करें। आइए 3 स्तरों के नेस्टेड डॉक्यूमेंट्स के साथ एक कलेक्शन बनाते हैं: > db.demo736.insertOne( { _id: 101, details1: [ { details2: [ { details3: { Name: John } } ] } ] } ); { acknowledged : true, insertedId : 101 } > db.demo736.insertOne( { _id: 102,

  1. - MongoDB: एक रिकॉर्ड को सरणी के साथ नए कलेक्शन में कई रिकॉर्ड्स में बदलें?

    इसके लिए $out के साथ aggregate() और $unwind का उपयोग कर सकते हैं। आइए एक कलेक्शन बनाते हैं: > db.demo757.insertOne( { id: 101, Name: [John, Bob, Chris] } ); { acknowledged : true, insertedId : ObjectId(5eb025745637cd592b2a4ae2) } > db.demo757.insertOne( { id: 102, Name: [David] } ); { acknowl