Tuto aktualizaci je nejlepší provést pomocí bulkWrite
API. Zvažte následující příklad pro výše uvedené dva dokumenty:
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}
zajišťuje, že dokumenty budou na serveru aktualizovány sériově, v uvedeném pořadí, a tedy pokud dojde k chybě, budou všechny zbývající aktualizace přerušeny. {"w": 1}
volba určuje problém zápisu, přičemž 1 je potvrzením požadavku, že operace zápisu se rozšířila do samostatného mongoda nebo primárního v sadě replik.
Pro MongoDB >= 2.6
a <= 3.0
, použijte Bulk Operations API
takto:
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);
});