Để cập nhật tài liệu khi chỉ biết _id (ObjectId), sử dụng update() với điều kiện {_id: ObjectId(...)} và toán tử $set để chỉ định giá trị mới.
Tạo collection:
> db.demo34.insertOne({"StudentFirstName":"Chris","StudentAge":24});
{ "acknowledged" : true, "insertedId" : ObjectId("5e1758b4cfb11e5c34d898cd") }
> db.demo34.insertOne({"StudentFirstName":"David","StudentAge":23});
{ "acknowledged" : true, "insertedId" : ObjectId("5e1758bdcfb11e5c34d898ce") }
> db.demo34.insertOne({"StudentFirstName":"Bob","StudentAge":20});
{ "acknowledged" : true, "insertedId" : ObjectId("5e1758c6cfb11e5c34d898cf") }
Xem dữ liệu:
> db.demo34.find();
{ "_id" : ObjectId("5e1758b4cfb11e5c34d898cd"), "StudentFirstName" : "Chris", "StudentAge" : 24 }
{ "_id" : ObjectId("5e1758bdcfb11e5c34d898ce"), "StudentFirstName" : "David", "StudentAge" : 23 }
{ "_id" : ObjectId("5e1758c6cfb11e5c34d898cf"), "StudentFirstName" : "Bob", "StudentAge" : 20 }
Cập nhật tài liệu có _id cụ thể:
> db.demo34.update({_id:ObjectId("5e1758bdcfb11e5c34d898ce")}, {$set:{"StudentFirstName" : "Mike","StudentAge" : 19}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Kết quả sau cập nhật:
> db.demo34.find();
{ "_id" : ObjectId("5e1758b4cfb11e5c34d898cd"), "StudentFirstName" : "Chris", "StudentAge" : 24 }
{ "_id" : ObjectId("5e1758bdcfb11e5c34d898ce"), "StudentFirstName" : "Mike", "StudentAge" : 19 }
{ "_id" : ObjectId("5e1758c6cfb11e5c34d898cf"), "StudentFirstName" : "Bob", "StudentAge" : 20 }
Lưu ý:
- Luôn dùng
$setđể cập nhật một phần, tránh ghi đè toàn bộ tài liệu - Phiên bản MongoDB mới khuyến nghị dùng
updateOne()hoặcupdateMany()thay choupdate() - ObjectId phải được bọc trong
ObjectId("..."), không phải chuỗi thường