MongoDB एग्रीगेशन में $project का उपयोग करके _id को बाहर करना
एग्रीगेशन पाइपलाइन में, $project स्टेज आउटपुट डॉक्यूमेंट्स के आकार को नियंत्रित करता है। _id: 0 सेट करके, आप अन्य फील्ड्स को स्पष्ट रूप से सूचीबद्ध किए बिना _id फील्ड को बाहर कर सकते हैं (आपको अभी भी उन फील्ड्स को शामिल करना होगा जिन्हें आप चाहते** हैं)।
नमूना डेटा बनाना
> db.excludeIdDemo.insertOne({"StudentFirstName":"John","StudentAge":21});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd701a56d78f205348bc632") }
> db.excludeIdDemo.insertOne({"StudentFirstName":"Robert","StudentAge":20});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd701af6d78f205348bc633") }
> db.excludeIdDemo.insertOne({"StudentFirstName":"Chris","StudentAge":24});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd701b86d78f205348bc634") }
सभी डॉक्यूमेंट्स देखना
> db.excludeIdDemo.find();
आउटपुट:
{ "_id" : ObjectId("5cd701a56d78f205348bc632"), "StudentFirstName" : "John", "StudentAge" : 21 }
{ "_id" : ObjectId("5cd701af6d78f205348bc633"), "StudentFirstName" : "Robert", "StudentAge" : 20 }
{ "_id" : ObjectId("5cd701b86d78f205348bc634"), "StudentFirstName" : "Chris", "StudentAge" : 24 }
_id को बाहर करना और केवल StudentFirstName प्रोजेक्ट करना
> db.excludeIdDemo.aggregate(
{
$project: {
_id: 0,
"StudentFirstName": 1
}
}
);
आउटपुट:
{ "StudentFirstName" : "John" }
{ "StudentFirstName" : "Robert" }
{ "StudentFirstName" : "Chris" }
व्याख्या
_id: 0- आउटपुट से _id फील्ड को बाहर करता है।"StudentFirstName": 1- केवल StudentFirstName शामिल करता है।- अन्य सभी फील्ड्स (StudentAge) स्वचालित रूप से बाहर हो जाते हैं।
महत्वपूर्ण नियम
- आप एक ही $project में इन्क्लूजन (1) और एक्सक्लूजन (0) को मिश्रित नहीं कर सकते _id फील्ड के अपवाद के साथ।
_id: 0एकमात्र एक्सक्लूजन है जिसकी अनुमति अन्यथा इन्क्लूजन-ओनली प्रोजेक्शन के साथ है।- यदि आप _id को बाहर किए बिना सभी फील्ड्स चाहते हैं, तो आपको प्रत्येक वांछित फील्ड को स्पष्ट रूप से सूचीबद्ध करना होगा।
find() के साथ तुलना
सामान्य find() में, आप { _id: 0 } प्रोजेक्शन के रूप में पास कर सकते हैं बिना अन्य फील्ड्स को सूचीबद्ध किए:
db.collection.find({}, { _id: 0 }); // सभी फील्ड्स लौटाता है सिवाय _id के
एग्रीगेशन में, $project को आउटपुट आकार को स्पष्ट रूप से परिभाषित करने की आवश्यकता होती है।