Phương thức update() (legacy) hoặc updateOne()/updateMany() (hiện đại) dùng để sửa đổi document. Sử dụng $set để cập nhật trường cụ thể.
Dữ liệu mẫu
> db.demo110.insertOne({"Name":"Chris"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e2eeb949fd5fd66da21447b") }
> db.demo110.insertOne({"Name":"David"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e2eeb9f9fd5fd66da21447c") }
> db.demo110.insertOne({"Name":"Bob"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e2eeba39fd5fd66da21447d") }
Cập nhật document theo _id
> db.demo110.update(
{_id:ObjectId("5e2eeb9f9fd5fd66da21447c")},
{$set:{"Name":"Robert"}}
);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Kết quả
{ "_id" : ObjectId("5e2eeb949fd5fd66da21447b"), "Name" : "Chris" }
{ "_id" : ObjectId("5e2eeb9f9fd5fd66da21447c"), "Name" : "Robert" }
{ "_id" : ObjectId("5e2eeba39fd5fd66da21447d"), "Name" : "Bob" }
Lưu ý quan trọng:
- Luôn dùng $set: Không thì sẽ thay thế toàn bộ document (trừ _id)
- Phiên bản mới: Dùng
updateOne()(1 doc) hoặcupdateMany()(nhiều doc) upsert: true: Tạo mới nếu không tìm thấy- Trả về:
nMatched,nModified,upsertedId
Ví dụ hiện đại:
db.demo110.updateOne(
{_id: ObjectId("5e2eeb9f9fd5fd66da21447c")},
{$set: {"Name": "Robert"}}
);