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

Cập nhật đơn document với findOneAndUpdate() MongoDB

Atomically tìm, cập nhật và trả về document

findOneAndUpdate() thực hiện tìm kiếm, cập nhật và trả về document trong một operation atomic, tránh race condition.

Dữ liệu điểm số

> db.demo349.insertOne({"Name": "Chris", "Marks": 56});
> db.demo349.insertOne({"Name": "David", "Marks": 78});
> db.demo349.insertOne({"Name": "Chris", "Marks": 89});
> db.demo349.insertOne({"Name": "David", "Marks": 54});

Tăng Marks 10 cho David đầu tiên

> db.demo349.findOneAndUpdate(
    { "Name": "David" },
    { $inc: { Marks: 10 } }
);

Kết quả trả về (document TRƯỚC khi cập nhật)

{ "_id": ObjectId("..."), "Name": "David", "Marks": 78 }

Kiểm tra sau cập nhật

> db.demo349.find();
{ "_id": ..., "Name": "Chris", "Marks": 56 }
{ "_id": ..., "Name": "David", "Marks": 88 }  <-- Đã cập nhật
{ "_id": ..., "Name": "Chris", "Marks": 89 }
{ "_id": ..., "Name": "David", "Marks": 54 }

Options quan trọng:

  • returnDocument: "after": Trả về document SAU cập nhật
  • sort: { _id: 1 }: Xác định document nào được cập nhật khi nhiều doc khớp
  • upsert: true: Tạo mới nếu không tìm thấy