Bäst att göra den här uppdateringen med bulkWrite
API. Betrakta följande exempel för de två ovanstående dokumenten:
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}
säkerställer att dokumenten kommer att uppdateras seriellt på servern, i den ordning som anges och därmed om ett fel uppstår avbryts alla återstående uppdateringar. {"w": 1}
alternativet bestämmer skrivproblemet där 1 är en bekräftelse på att skrivoperationen har spridits till den fristående mongoden eller den primära i en replikuppsättning.
För MongoDB >= 2.6
och <= 3.0
, använd Bulk Operations API
enligt följande:
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);
});