MongoDB में $unwind प्रत्येक तत्व के लिए एक दस्तावेज़ को आउटपुट करने के लिए इनपुट दस्तावेज़ों से एक सरणी फ़ील्ड को डिकंस्ट्रक्ट करता है।
$group का उपयोग निर्दिष्ट _id अभिव्यक्ति द्वारा इनपुट दस्तावेज़ों को समूहीकृत करने के लिए किया जाता है और प्रत्येक विशिष्ट समूह के लिए, एक दस्तावेज़ को आउटपुट करता है।
$project का उपयोग अनुरोधित फ़ील्ड वाले दस्तावेज़ों को पाइपलाइन में अगले चरण में भेजने के लिए किया जाता है।
आइए दस्तावेजों के साथ एक संग्रह बनाएं -
> db.demo238.insertOne( ... { ... ... "EmailId" : "[email protected]", ... "details" : [ ... { ... "Name" : "Bob", ... "isActive" : true ... } ... ] ... } ...); { "acknowledged" : true, "insertedId" : ObjectId("5e4418e3f4cebbeaebec5152") } > > db.demo238.insertOne( ... { ... ... "EmailId" : "[email protected]", ... "details" : [ ... { ... "Name" : "David" ... } ... ] ... } ...); { "acknowledged" : true, "insertedId" : ObjectId("5e4418e3f4cebbeaebec5153") } > > > db.demo238.insertOne( ... { ... ... "EmailId" : "[email protected]", ... "details" : [ ... { ... "Name" : "Carol", ... "isActive" : true ... } ... ] ... } ...); { "acknowledged" : true, "insertedId" : ObjectId("5e4418e4f4cebbeaebec5154") }
खोज () विधि की सहायता से संग्रह से सभी दस्तावेज़ प्रदर्शित करें:
> db.demo238.find().pretty();
यह निम्नलिखित आउटपुट देगा -
{ "_id" : ObjectId("5e4418e3f4cebbeaebec5152"), "EmailId" : "[email protected]", "details" : [ { "Name" : "Bob", "isActive" : true } ] } { "_id" : ObjectId("5e4418e3f4cebbeaebec5153"), "EmailId" : "[email protected]", "details" : [ { "Name" : "David" } ] } { "_id" : ObjectId("5e4418e4f4cebbeaebec5154"), "EmailId" : "[email protected]", "details" : [ { "Name" : "Carol", "isActive" : true } ] }
MongoDB एग्रीगेट को लागू करने के लिए क्वेरी निम्नलिखित है - खोलना, समूह और प्रोजेक्ट -
> db.demo238.aggregate( ... [ ... { "$match": { "details.isActive": true } }, ... { "$unwind": "$details" }, ... { "$match": { "details.isActive": true } }, ... { "$group": { ... "_id": "$details.Name", ... "active": { "$first": "$_id" } ... }} ... ], ... function(err,result) { ... ... } ...);
यह निम्नलिखित आउटपुट देगा -
{ "_id" : "Carol", "active" : ObjectId("5e4418e4f4cebbeaebec5154") } { "_id" : "Bob", "active" : ObjectId("5e4418e3f4cebbeaebec5152") }