Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Cập nhật tài liệu MongoDB chỉ bằng ObjectId

Để 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ặc updateMany() thay cho update()
  • ObjectId phải được bọc trong ObjectId("..."), không phải chuỗi thường