Tốt nhất bạn nên thực hiện cập nhật này bằng cách sử dụng bulkWrite
API. Hãy xem xét ví dụ sau cho hai tài liệu trên:
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}
đảm bảo rằng các tài liệu sẽ được cập nhật tuần tự trên máy chủ, theo thứ tự được cung cấp và do đó nếu có lỗi xảy ra, tất cả các bản cập nhật còn lại sẽ bị hủy bỏ. {"w": 1}
tùy chọn xác định mối quan tâm ghi với 1 là xác nhận yêu cầu rằng thao tác ghi đã truyền đến mongod độc lập hoặc chính trong một tập hợp bản sao.
Đối với MongoDB >= 2.6
và <= 3.0
, sử dụng API hoạt động hàng loạt
như sau:
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);
});