Cập nhật chính xác trường cần thiết bằng $set
Toán tử $set trong update chỉ thay đổi giá trị của các trường được chỉ định, giữ nguyên các trường khác.
Dữ liệu tên
> db.demo352.insertOne({"Name": "Chris"});
> db.demo352.insertOne({"Name": "David"});
> db.demo352.insertOne({"Name": "Bob"});
> db.demo352.insertOne({"Name": "Mike"});
Cập nhật David thành Robert
> db.demo352.update(
{ Name: "David" },
{ $set: { "Name": "Robert" } }
);
Kết quả
{ "_id": ..., "Name": "Chris" }
{ "_id": ..., "Name": "Robert" } <-- Đã cập nhật
{ "_id": ..., "Name": "Bob" }
{ "_id": ..., "Name": "Mike" }
So sánh:
{ $set: { field: value } }: Cập nhật/trường mới{ $unset: { field: "" } }: Xóa trường{ $inc: { field: n } }: Tăng/giảm số- Thay thế toàn bộ document:
db.col.replaceOne(filter, newDoc)
Khuyến nghị: Dùng updateOne() hoặc updateMany() thay vì update() deprecated.