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ậtforEach()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ườngMarks- Cách này an toàn hơn
updateManykhi logic phức tạp
Lưu ý: MongoDB 3.2+ khuyến nghị dùng updateOne() hoặc updateMany() thay vì update().