Det er bedst at udføre denne opdatering ved hjælp af code>bulkWrite API. Overvej følgende eksempel for de to ovenstående dokumenter:
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}
sikrer, at dokumenterne bliver opdateret serielt på serveren i den angivne rækkefølge, og hvis der opstår en fejl, afbrydes alle resterende opdateringer. {"w":1}
option bestemmer skriveproblemet, hvor 1 er en anmodningsbekræftelse af, at skriveoperationen har forplantet sig til den selvstændige mongod eller den primære i et replikasæt.
For MongoDB >=2.6
og <=3.0
, brug Bulk Operations API
som følger:
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);
});