Kể từ Mongoose 4+, đừng quên đặt mới:true cùng với việc nâng cấp hoặc bạn sẽ nhận được tài liệu cũ dưới dạng giá trị trả về, không phải tài liệu được cập nhật.
Điều này khá phức tạp, đặc biệt là khi yêu cầu tạo tài liệu, như thể bạn không chỉ định new:true, bạn sẽ nhận được tài liệu rỗng (không có tài liệu hiện có), nhưng không có lỗi.
var myObj = ...;
collection.findOneAndUpdate(
{uniqueAttr: myObj.uniqueAttr},
myObj,
{upsert: true, new: true},
function(...) {...}