Cú pháp của bạn ở đây về cơ bản là đúng, nhưng thực thi chung của bạn đã sai và bạn nên "tách biệt" hành động "upsert" khỏi các sửa đổi khác. Nếu không, những điều này sẽ "xung đột" và tạo ra lỗi khi xảy ra "upert":
LineupPointsRecord.native(function (err,collection) {
var bulk = collection.initializeOrderedBulkOp();
// Match and update only. Do not attempt upsert
bulk.find({
"teamId": lineUpPointsGeneralRecord.teamId,
"round": 0
}).updateOne({
"$inc": { "lfPoints": roundPoints },
"$push": { "roundPoints": roundPoints }
});
// Attempt upsert with $setOnInsert only
bulk.find({
"teamId": lineUpPointsGeneralRecord.teamId,
"round": 0
}).upsert().updateOne({
"$setOnInsert": lineUpPointsGeneralRecord
});
bulk.execute(function (err,updateResult) {
sails.log.debug(err,updateResult);
});
});
Đảm bảo sails-mongo của bạn là phiên bản mới nhất hỗ trợ các hoạt động Bulk đúng cách, bao gồm một trình điều khiển gốc của nút gần đây. Gần đây nhất hỗ trợ trình điều khiển v2, điều này tốt cho việc này.