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

MongoDB có trả về kết quả sau khi tăng ($inc) không?

Có, dùng findAndModify() với tùy chọn new: true để trả về tài liệu sau khi cập nhật.

Tạo collection

> db.returnResultOfIncementDemo.insertOne({"PlayerScore": 98});
{ "acknowledged": true, "insertedId": ObjectId("5cd3c292edc6604c74817cda") }

Hiển thị tài liệu

> db.returnResultOfIncementDemo.find();

Kết quả: { "_id": ObjectId("..."), "PlayerScore": 98 }

Tăng PlayerScore 2 đơn vị và trả về tài liệu mới

> db.returnResultOfIncementDemo.findAndModify({
    query: {},
    update: { $inc: { PlayerScore: 2 } },
    new: true
});

Kết quả (trả về tài liệu SAU khi cập nhật):

{
    "_id": ObjectId("5cd3c292edc6604c74817cda"),
    "PlayerScore": 100
}

Giải thích:

  • query: {} — khớp tài liệu đầu tiên (nên thêm điều kiện cụ thể)
  • update: { $inc: { PlayerScore: 2 } } — tăng 2
  • new: true — trả về tài liệu sau khi cập nhật (mặc định false trả về trước khi cập nhật)

Lưu ý: findAndModify đã lỗi thời. Phiên bản mới dùng findOneAndUpdate() với tùy chọn returnDocument: 'after'.