Sử dụng $elemMatch kết hợp với $set. Tạo collection với document:
> db.keyValueDemo.insertOne(
{
"_id" : new ObjectId(),
"CustomerDetails" : [
{ "Name" : "Chris", "Age" : 24 },
{ "Name" : "Robert", "Age" : 29 },
{ "Name" : "David", "Age" : 35 }
]
}
); { "acknowledged" : true, "insertedId" : ObjectId("5cefcf36ef71edecf6a1f6bf") }
Hiển thị document:
> db.keyValueDemo.find().pretty();
Kết quả
{ "_id" : ObjectId("5cefcf36ef71edecf6a1f6bf"), "CustomerDetails" : [ { "Name" : "Chris", "Age" : 24 }, { "Name" : "Robert", "Age" : 29 }, { "Name" : "David", "Age" : 35 } ] }
Truy vấn cập nhật Age = 56 cho phần tử trong mảng CustomerDetails có Name = "David":
> db.keyValueDemo.update(
{ "CustomerDetails": { "$elemMatch": { "Name": "David" } } },
{ "$set": { "CustomerDetails.$.Age": 56 } }
);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Kiểm tra lại document:
> db.keyValueDemo.find().pretty();
Kết quả
{ "_id" : ObjectId("5cefcf36ef71edecf6a1f6bf"), "CustomerDetails" : [ { "Name" : "Chris", "Age" : 24 }, { "Name" : "Robert", "Age" : 29 }, { "Name" : "David", "Age" : 56 } ] }