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+)