この更新は、 <を使用して行うのが最適です。 code> BulkWrite API。上記の2つのドキュメントについて、次の例を検討してください。
var bulkUpdateOps = [
{
"updateOne": {
"filter": { "reference": 10 },
"update": { "$push": { "history": history1 } }
}
},
{
"updateOne": {
"filter": { "reference": 20 },
"update": { "$push": { "history": history2 } }
}
}
];
mongo.financeCollection.bulkWrite(bulkUpdateOps,
{"ordered": true, "w": 1}, function(err, result) {
// do something with result
callback(err);
}
{"ordered":true、 "w":1}
ドキュメントがサーバー上で提供された順序で順次更新されることを保証します。したがって、エラーが発生した場合、残りのすべての更新は中止されます。 {"w":1}
オプションは、書き込みの懸念を決定します。1は、書き込み操作がスタンドアロンのmongodまたはレプリカセットのプライマリに伝播したことを確認する要求です。
MongoDBの場合>=2.6
および<=3.0
、 Bulk OpeartionsAPI
を使用します 次のように:
var bulkUpdateOps = mongo.financeCollection.initializeOrderedBulkOp();
bulkUpdateOps
.find({ "reference": 10 })
.updateOne({
"$push": { "history": history1 }
});
bulkUpdateOps
.find({ "reference": 20 })
.updateOne({
"$push": { "history": history2 }
});
bulk.execute(function(err, result){
bulkUpdateOps = mongo.financeCollection.initializeOrderedBulkOp();
// do something with result
callback(err);
});