MongoDB-এ এগ্রিগেশন পাইপলাইনে $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" দিয়ে রিপ্লেস করা (আউটপুটে)
> db.replaceValueDemo.aggregate([
{
"$project": {
"_id": 1,
"EmployeeOtherDetails": {
"EmployeeAge": 1,
"EmployeeDesignation": { $literal: "Developer" }
}
}
}
]);
আউটপুট:
{ "_id" : 100, "EmployeeOtherDetails" : { "EmployeeAge" : 27, "EmployeeDesignation" : "Developer" } }
{ "_id" : 101, "EmployeeOtherDetails" : { "EmployeeAge" : 26, "EmployeeDesignation" : "Developer" } }
ব্যাখ্যা:
$literal: "Developer"— কনস্ট্যান্ট মান সেট করে, এক্সপ্রেশন ইভ্যালুয়েট করে না।EmployeeAge: 1— মূল ফিল্ড 그대로 রাখা হয়েছে।- এটি শুধু আউটপুট পরিবর্তন করে, ডাটাবেসে ডকুমেন্ট আপডেট হয় না।
ডাটাবেসে আপডেট করতে চাইলে: updateMany({}, { $set: { "EmployeeOtherDetails.EmployeeDesignation": "Developer" } }) ব্যবহার করুন।
ব্যবহারিক পরিস্থিতি: রিপোর্টিং, ডেটা ট্রান্সফরমেশন, সেনসিটিভ ডেটা মাস্কিং (যেমন পাসওর্ড হাইড করা) এর সময়।