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 प्रकार का हो सकता है: स्ट्रिंग, संख्या, ऑब्जेक्ट, सरणी, आदि।