Führen Sie dieses Update am besten mit
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);
}
Der {"ordered":true, "w":1}
sorgt dafür, dass die Dokumente seriell in der vorgegebenen Reihenfolge auf dem Server aktualisiert werden und somit im Fehlerfall alle weiteren Updates abgebrochen werden. Der {"w":1}
Die Option bestimmt das Schreibproblem, wobei 1 eine Anforderungsbestätigung ist, dass die Schreiboperation an den eigenständigen Mongod oder den primären in einem Replikatsatz weitergegeben wurde.
Für MongoDB >=2.6
und <=3.0
, verwenden Sie die API für Massenoperationen
wie folgt:
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);
});