Dùng positional operator $ trong $set để cập nhật trường của subdocument trong mảng khớp điều kiện.
Tạo collection demo134:
> db.demo134.insertOne({"EmployeeId":101,"EmployeeDetails":[{"EmployeeName":"Chris","EmployeeAge":27},{"EmployeeName":"Bob","EmployeeAge":28}]});
> db.demo134.insertOne({"EmployeeId":102,"EmployeeDetails":[{"EmployeeName":"David","EmployeeAge":24},{"EmployeeName":"Carol","EmployeeAge":29}]});
Cập nhật EmployeeName = "Robert" cho subdocument có EmployeeName="Chris" trong document EmployeeId=101:
> db.demo134.update(
{"EmployeeId":101, "EmployeeDetails.EmployeeName":"Chris"},
{$set: {"EmployeeDetails.$.EmployeeName":"Robert"}}
);
Kết quả: Chris → Robert trong document 101:
{
"_id" : ObjectId("5e319b2f68e7f832db1a7f7c"),
"EmployeeId" : 101,
"EmployeeDetails" : [
{"EmployeeName":"Robert","EmployeeAge":27},
{"EmployeeName":"Bob","EmployeeAge":28}
]
}
... (document 102 không đổi)