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

Cập nhật object lồng nhau trong MongoDB

Để cập nhật trường bên trong object lồng nhau, sử dụng update() (hoặc updateOne()/updateMany()) kết hợp dot notation và toán tử $set.

Tạo collection

> db.demo77.insertOne({"Details" : { "Score" : 78 } });
{ "acknowledged" : true, "insertedId" : ObjectId("5e2bd6f371bf0181ecc4228a") }

Cập nhật trường lồng nhau

> db.demo77.update({'Details.Score':78}, {$set:{'Details.Score':89}}, {multi:true});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

Kết quả

> db.demo77.find();
{ "_id" : ObjectId("5e2bd6f371bf0181ecc4228a"), "Details" : { "Score" : 89 } }

Giải thích:

  • 'Details.Score': Dot notation truy cập trường lồng nhau
  • $set: Chỉ cập nhật trường chỉ định, giữ nguyên các trường khác
  • {multi:true}: Cập nhật tất cả document khớp (mặc định false - chỉ cập nhật 1)

Phiên bản hiện đại (MongoDB 3.2+):

// Cập nhật 1 document
db.demo77.updateOne({'Details.Score': 78}, {$set: {'Details.Score': 89}});

// Cập nhật nhiều document
db.demo77.updateMany({'Details.Score': 78}, {$set: {'Details.Score': 89}});

Nên dùng updateOne/updateMany thay vì update cũ vì API rõ ràng hơn.