Sử dụng Aggregation Framework kết hợp toán tử $literal để thay thế giá trị trường bằng giá trị tĩnh.
Tạo collection với document:
> 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 }
Hiển thị tất cả document:
> db.replaceValueDemo.find().pretty();
Kết quả:
{ "_id" : 100, "EmployeeName" : "Chris", "EmployeeOtherDetails" : { "EmployeeDesignation" : "HR", "EmployeeAge" : 27 } }
{ "_id" : 101, "EmployeeName" : "David", "EmployeeOtherDetails" : { "EmployeeDesignation" : "Tester", "EmployeeAge" : 26 } }
Truy vấn Aggregation: giữ EmployeeAge, thay EmployeeDesignation = "Developer" cho tất cả document:
> db.replaceValueDemo.aggregate([
{
"$project": {
"_id": 1,
"EmployeeOtherDetails": {
"EmployeeAge": 1,
"EmployeeDesignation": { $literal: "Developer" }
}
}
}
]);
Kết quả:
{ "_id" : 100, "EmployeeOtherDetails" : { "EmployeeAge" : 27, "EmployeeDesignation" : "Developer" } }
{ "_id" : 101, "EmployeeOtherDetails" : { "EmployeeAge" : 26, "EmployeeDesignation" : "Developer" } }