इसके लिए aggregate() के साथ $project का उपयोग करें। एग्रीगेशन में $project पाइपलाइन में अगले चरण के लिए अनुरोधित फील्ड्स के साथ डॉक्यूमेंट्स को पास करता है।
आइए एक कलेक्शन बनाते हैं:
> db.demo762.insertOne({ "_id" : { "userId":101, "userName":"Chris" }, "countryName" : "US", "details" : [ { "Name" : "Robert", "DueDate" : "2020-04-10" }, { "Name" : "Robert", "DueDate" : "2020-04-09" }, { "Name" : "Robert", "DueDate" : "2020-03-06" } ] } ); { "acknowledged" : true, "insertedId" : { "userId" : 101, "userName" : "Chris" } }
find() से सभी डॉक्यूमेंट्स देखें:
> db.demo762.find();
आउटपुट:
MongoDB एग्रीगेशन और प्रोजेक्शन के लिए क्वेरी (DueDate के अनुसार सॉर्ट करके पहले 2 आइटम):
> db.demo762.aggregate([ ... { "$match": { "_id": { "$eq": { userId:101,userName:"Chris" }} } }, ... { "$unwind": "$details" }, ... { "$sort": { "details.DueDate": 1 }}, ... { "$group": { "_id": "$_id", "details": { "$push": "$details" }, "countryName": { "$first": "$countryName" } } }, ... { "$project": { "details": { "$slice": ["$details", 2] } ,"countryName": 1 }} ... ]).pretty();परिणाम: