Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MongoDB

MongoDB में एग्रीगेशन फ्रेमवर्क का उपयोग करके अन्य फील्ड्स शामिल किए बिना _id को कैसे बाहर करें?

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 को आउटपुट आकार को स्पष्ट रूप से परिभाषित करने की आवश्यकता होती है।

  1. - MongoDB में _id द्वारा दस्तावेज़ कैसे हटाएं?

    _id द्वारा हटाने के लिए, MongoDB में remove() का उपयोग करें। निम्न सिंटैक्स है: db.yourCollectionName.remove({_id:yourObjectId}); उपरोक्त सिंटैक्स को समझने के लिए, आइए दस्तावेज़ों के साथ एक संग्रह बनाएं: > db.demo518.insertOne({ClientName:Chris}); { acknowledged : true, insertedId : ObjectId(5e88

  1. - MongoDB क्वेरी: _id को छोड़कर सभी फील्ड्स के मान प्रदर्शित करें

    आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo590.insert([ { Name: Chris, Age: 21 }, { Name: Bob, Age: 20 }, { Name: Sam, Age: 19 } ]); BulkWriteResult({ writeErrors: [], writeConcernErrors: [], nInserted: 3, nUpserted: 0, nMatched: 0, nModified: 0, nRemoved: 0, upserted: [] }

  1. - MongoDB में $project का उपयोग करके सरणी में केवल विशिष्ट फील्ड प्रदर्शित करें और अन्य फील्ड्स को अनदेखा करें

    विशिष्ट फील्ड प्रदर्शित करने के लिए $project के साथ $unwind का उपयोग करें। किसी फील्ड को अनदेखा करने के लिए उसे 0 पर सेट करें। आइए एक कलेक्शन बनाते हैं: > db.demo731.insertOne({ ProductInformation: [ { ProductId:Product-1, ProductPrice:80 }, { ProductId:Product-2, ProductPrice:45 }, { ProductId: