MongoDB एग्रीगेशन में $project का उपयोग करके फ़ील्ड्स चयन करना
MongoDB एग्रीगेशन पाइपलाइन में $project स्टेज का उपयोग करके आप निर्दिष्ट कर सकते हैं कि कौन से फ़ील्ड्स शामिल करने हैं, _id को दबा सकते हैं, नए फ़ील्ड्स जोड़ सकते हैं, या मौजूदा फ़ील्ड्स के मान रीसेट कर सकते हैं।
सैंपल डेटा बनाना
> db.demo226.insertOne({"Name":"Chris","Age":21});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3f9be803d395bdc2134738") }
> db.demo226.insertOne({"Name":"Bob","Age":20});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3f9bf003d395bdc2134739") }
> db.demo226.insertOne({"Name":"David","Age":22});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3f9bf803d395bdc213473a") }
सभी दस्तावेज़ देखना (डिफ़ॉल्ट _id के साथ)
> db.demo226.find();
आउटपुट:
{ "_id" : ObjectId("5e3f9be803d395bdc2134738"), "Name" : "Chris", "Age" : 21 }
{ "_id" : ObjectId("5e3f9bf003d395bdc2134739"), "Name" : "Bob", "Age" : 20 }
{ "_id" : ObjectId("5e3f9bf803d395bdc213473a"), "Name" : "David", "Age" : 22 }
_id को छोड़कर कस्टम फ़ील्ड नामों के साथ प्रोजेक्शन
> db.demo226.aggregate([
{$project: {
_id: false,
"StudentFirstName": "$Name",
"StudentAge": "$Age"
}}
]);
आउटपुट:
{ "StudentFirstName" : "Chris", "StudentAge" : 21 }
{ "StudentFirstName" : "Bob", "StudentAge" : 20 }
{ "StudentFirstName" : "David", "StudentAge" : 22 }
महत्वपूर्ण नोट्स
_id: falseया_id: 0- _id फ़ील्ड को आउटपुट से बाहर करता है"NewField": "$ExistingField"- मौजूदा फ़ील्ड का मान नए फ़ील्ड नाम के साथ प्रोजेक्ट करता हैfind()में भी प्रोजेक्शन संभव है:db.demo226.find({}, {_id: 0, Name: 1, Age: 1})- एग्रीगेशन अधिक जटिल ट्रांसफॉर्मेशन के लिए लचीला है