ここでの構文は基本的に正しいですが、一般的な実行が間違っていたため、他の変更から「アップサート」アクションを「分離」する必要がありました。そうしないと、「衝突」し、「アップサート」が発生したときにエラーが発生します。
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);
});
});
sails-mongo を確認してください は、バルク操作を適切にサポートする最新バージョンであり、最近のノードネイティブドライバーが含まれています。最新のものはv2ドライバーをサポートしており、これは問題ありません。