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

Cập nhật điểm cho sinh viên David trong MongoDB

Sử dụng forEach() để duyệt tìm sinh viên tên "David" và cập nhật điểm mới cho document đó.

Tạo collection dữ liệu sinh viên

> db.demo634.insertOne({Name:"Chris","Marks":76});
> db.demo634.insertOne({Name:"Bob","Marks":67});
> db.demo634.insertOne({Name:"David","Marks":37});

Hiển thị trước khi cập nhật

> db.demo634.find();

Kết quả:

{
  "_id" : ObjectId("5e9c0ea66c954c74be91e6c9"), "Name" : "Chris", "Marks" : 76
}
{
  "_id" : ObjectId("5e9c0ead6c954c74be91e6ca"), "Name" : "Bob", "Marks" : 67
}
{
  "_id" : ObjectId("5e9c0eb76c954c74be91e6cb"), "Name" : "David", "Marks" : 37
}

Cập nhật điểm David từ 37 thành 98

> db.demo634.find({Name:"David"}).forEach(function(d) {
  db.demo634.update({_id:d._id}, {$set:{Marks:98}});
})

Kiểm tra sau cập nhật

> db.demo634.find();

Kết quả:

{
  "_id" : ObjectId("5e9c0ea66c954c74be91e6c9"), "Name" : "Chris", "Marks" : 76
}
{
  "_id" : ObjectId("5e9c0ead6c954c74be91e6ca"), "Name" : "Bob", "Marks" : 67
}
{
  "_id" : ObjectId("5e9c0eb76c954c74be91e6cb"), "Name" : "David", "Marks" : 98
}

Giải thích:

  • find({Name:"David"}) lọc document cần cập nhật
  • forEach() lặp qua từng document khớp (thường chỉ 1)
  • update({_id:d._id}, {$set:{Marks:98}}) cập nhật chính xác document theo _id, chỉ thay đổi trường Marks
  • Cách này an toàn hơn updateMany khi logic phức tạp

Lưu ý: MongoDB 3.2+ khuyến nghị dùng updateOne() hoặc updateMany() thay vì update().