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

Cập nhật dữ liệu trong MongoDB với update()

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ặc updateMany() (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"}}
);