MongoDB cho phép cập nhật tài liệu chỉ khi thoả mãn điều kiện cụ thể, sử dụng update() (hoặc updateOne()/updateMany()) kết hợp bộ lọc query và toán tử $set.
Dữ liệu mẫu
> db.demo150.insertOne({"StudentId":101,"StudentName":"Chris","StudentMarks":35});
{ "acknowledged" : true, "insertedId" : ObjectId("5e350dcdfdf09dd6d08539d3") }
> db.demo150.insertOne({"StudentId":102,"StudentName":"Chris","StudentMarks":55});
{ "acknowledged" : true, "insertedId" : ObjectId("5e350dcefdf09dd6d08539d4") }
> db.demo150.insertOne({"StudentId":103,"StudentName":"David","StudentMarks":34});
{ "acknowledged" : true, "insertedId" : ObjectId("5e350dcffdf09dd6d08539d5") }
> db.demo150.insertOne({"StudentId":104,"StudentName":"Chris","StudentMarks":38});
{ "acknowledged" : true, "insertedId" : ObjectId("5e350dd0fdf09dd6d08539d6") }
Xem dữ liệu
> db.demo150.find();
{ "_id" : ObjectId("5e350dcdfdf09dd6d08539d3"), "StudentId" : 101, "StudentName" : "Chris", "StudentMarks" : 35 }
{ "_id" : ObjectId("5e350dcefdf09dd6d08539d4"), "StudentId" : 102, "StudentName" : "Chris", "StudentMarks" : 55 }
{ "_id" : ObjectId("5e350dcffdf09dd6d08539d5"), "StudentId" : 103, "StudentName" : "David", "StudentMarks" : 34 }
{ "_id" : ObjectId("5e350dd0fdf09dd6d08539d6"), "StudentId" : 104, "StudentName" : "Chris", "StudentMarks" : 38 }
Cập nhật: StudentId=103 -> set StudentMarks=97
> db.demo150.update({"StudentId":103},{$set:{"StudentMarks":97}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Kết quả
> db.demo150.find();
{ "_id" : ObjectId("5e350dcdfdf09dd6d08539d3"), "StudentId" : 101, "StudentName" : "Chris", "StudentMarks" : 35 }
{ "_id" : ObjectId("5e350dcefdf09dd6d08539d4"), "StudentId" : 102, "StudentName" : "Chris", "StudentMarks" : 55 }
{ "_id" : ObjectId("5e350dcffdf09dd6d08539d5"), "StudentId" : 103, "StudentName" : "David", "StudentMarks" : 97 }
{ "_id" : ObjectId("5e350dd0fdf09dd6d08539d6"), "StudentId" : 104, "StudentName" : "Chris", "StudentMarks" : 38 }
Mở rộng: Có thể kết hợp nhiều điều kiện trong query: {StudentName: "Chris", StudentMarks: {$lt: 40}}. Dùng updateMany để cập nhật tất cả tài liệu khớp. Thêm upsert: true để tạo mới nếu không tìm thấy.