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

MongoDB में एग्रीगेशन से मान कैसे रिप्लेस करें?

MongoDB एग्रीगेशन पाइपलाइन में फील्ड मान को स्थिर मान से रिप्लेस करने के लिए $project स्टेज में $literal ऑपरेटर का उपयोग करें।

उदाहरण

नेस्टेड ऑब्जेक्ट वाले दस्तावेज़ बनाएं:

> db.replaceValueDemo.insertOne(
  {
    _id: 100,
    "EmployeeName": "Chris",
    "EmployeeOtherDetails": {
      "EmployeeDesignation": "HR",
      "EmployeeAge": 27
    }
  }
);
{ "acknowledged" : true, "insertedId" : 100 }

> db.replaceValueDemo.insertOne(
  {
    _id: 101,
    "EmployeeName": "David",
    "EmployeeOtherDetails": {
      "EmployeeDesignation": "Tester",
      "EmployeeAge": 26
    }
  }
);
{ "acknowledged" : true, "insertedId" : 101 }

दस्तावेज़ देखें:

> db.replaceValueDemo.find().pretty();
{ "_id" : 100, "EmployeeName" : "Chris", "EmployeeOtherDetails" : { "EmployeeDesignation" : "HR", "EmployeeAge" : 27 } }
{ "_id" : 101, "EmployeeName" : "David", "EmployeeOtherDetails" : { "EmployeeDesignation" : "Tester", "EmployeeAge" : 26 } }

EmployeeDesignation को "Developer" से रिप्लेस करें (EmployeeAge रखें)

> db.replaceValueDemo.aggregate([
  {
    "$project": {
      "_id": 1,
      "EmployeeOtherDetails": {
        "EmployeeAge": 1,
        "EmployeeDesignation": { $literal: "Developer" }
      }
    }
  }
]);

आउटपुट:

{ "_id" : 100, "EmployeeOtherDetails" : { "EmployeeAge" : 27, "EmployeeDesignation" : "Developer" } }
{ "_id" : 101, "EmployeeOtherDetails" : { "EmployeeAge" : 27, "EmployeeDesignation" : "Developer" } }

व्याख्या:

  • $literal - स्थिर मान निर्दिष्ट करता है (यहां "Developer")
  • EmployeeAge: 1 - मौजूदा फील्ड शामिल करता है
  • मूल दस्तावेज़ अपरिवर्तित रहता है (एग्रीगेशन केवल पढ़ता है)

मूल दस्तावेज़ अपडेट करने के लिए

एग्रीगेशन केवल पढ़ता है। अपडेट के लिए:

db.replaceValueDemo.updateMany(
  {},
  {$set: {"EmployeeOtherDetails.EmployeeDesignation": "Developer"}}
);

$literal के अन्य उपयोग

  • एग्रीगेशन में स्थिर मान इंजेक्ट करना
  • $cond में स्थिर मान: {$cond: [condition, "$field", {$literal: "default"}]}
  • पाइपलाइन में गणना किए गए फील्ड के साथ स्थिर मान जोड़ना

नोट: $literal का मान किसी भी BSON प्रकार का हो सकता है: स्ट्रिंग, संख्या, ऑब्जेक्ट, सरणी, आदि।

  1. - MongoDB Aggregation Framework - Specific Field Value Match करना

    Specific field value match करने के लिए MongoDB aggregation में $match का उपयोग करें। Collection बनाना > db.demo555.insertOne({CountryName:US}); { acknowledged : true, insertedId : ObjectId(5e8f21bf54b4472ed3e8e85f) } > db.demo555.insertOne({CountryName:UK}); { acknowledged : true, insertedId

  1. - MongoDB में Single Array Value को String से Replace करना

    Replace करने के लिए $set और positional $ operator का उपयोग करें। Collection बनाना > db.demo564.insertOne({StudentName:[Chris,David,Mike,Sam]}); { acknowledged : true, insertedId : ObjectId(5e90880a39cfeaaf0b97b576) } सभी Documents Display करना > db.demo564.find().pretty(); Output: { _id :

  1. - MongoDB Aggregation - Specific Field Value वाले Documents Fetch करना

    इसके लिए aggregate() का उपयोग करें। मान लें हमें field Age value 21 वाले documents fetch करने हैं। Collection बनाना > db.demo685.insertOne( ... { ... details: ... [ ... { Name:Chris, Age:21 }, ... { Name:David, Age:23 }, ... { Name:Bob, Age:21 } ... ] ... } ...