Cập nhật trường Score trong mảng details nơi FirstName="David" và LastName="Miller". Tạo collection:
> db.demo196.insertOne({
"Id" : "101",
"details" : [
{ "FirstName" : "Chris", "LastName" : "Brown", "Score" : 45 },
{ "FirstName" : "David", "LastName" : "Miller", "Score" : 87 },
{ "FirstName" : "John", "LastName" : "Doe", "Score" : 56 }
]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3af6b103d395bdc21346d7") }
Hiển thị tài liệu:
> db.demo196.find();
Kết quả:
Cập nhật Score = 98 cho phần tử có FirstName="David" và LastName="Miller" sử dụng
$elemMatchvà positional operator$:> db.demo196.update( { "details": { "$elemMatch": { "FirstName" : "David", "LastName" : "Miller" } } }, { "$set": { "details.$.Score" : 98 }} ); WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })Kết quả sau cập nhật:
> db.demo196.find();Cơ chế:
$elemMatchtìm phần tử khớp trong mảng, toán tử vị trí$tham chiếu đến phần tử đó để cập nhật.