Sử dụng BulkWrite
API để thực hiện cập nhật:
var bulkUpdateOps = genres.map(function(doc) {
return {
"updateOne": {
"filter": { "_id": doc.id },
"update": { "$set": { "name": doc.name } },
"upsert": true
}
};
});
db.collection('genres').bulkWrite(bulkUpdateOps, function(err, r) {
// do something with result
})
Nếu bạn đang xử lý các mảng lớn hơn, tức là> 1000 thì hãy cân nhắc gửi các lần ghi tới máy chủ theo lô 500, điều này mang lại cho bạn hiệu suất tốt hơn vì bạn không gửi mọi yêu cầu đến máy chủ, chỉ một lần trong mỗi 500 yêu cầu:
var bulkUpdateOps = [],
counter = 0;
genres.forEach(function(doc) {
bulkUpdateOps.push({
"updateOne": {
"filter": { "_id": doc.id },
"update": { "$set": { "name": doc.name } },
"upsert": true
}
});
counter++;
if (counter % 500 == 0) {
db.collection('genres').bulkWrite(bulkUpdateOps, function(err, r) {
// do something with result
});
bulkUpdateOps = [];
}
})
if (counter % 500 != 0) {
db.collection('genres').bulkWrite(bulkUpdateOps, function(err, r) {
// do something with the result
});
}