bulkWriteका उपयोग करना कोड>
अद्यतन करने के लिए एपीआई इसे बेहतर तरीके से संभालता है
mongodb.connect(mongo_url, function(err, db) {
if(err) console.log(err)
else {
var mongo_products_collection = db.collection("products")
mongoUpsert(mongo_products_collection, data_products, function() {
db.close()
})
}
})
function mongoUpsert(collection, data_array, cb) {
var bulkUpdateOps = data_array.map(function(data) {
return {
"updateOne": {
"filter": {
"product_id": data.product_id,
"post_modified": { "$ne": data.post_modified }
},
"update": { "$set": data },
"upsert": true
}
};
});
collection.bulkWrite(bulkUpdateOps, function(err, r) {
// do something with result
});
return cb(false);
}
यदि आप बड़े सरणियों के साथ काम कर रहे हैं यानी> 1000 तो 500 के बैच में सर्वर को लिखने पर विचार करें जो आपको बेहतर प्रदर्शन देता है क्योंकि आप सर्वर को हर अनुरोध नहीं भेज रहे हैं, हर 500 अनुरोधों में सिर्फ एक बार।
var ops = [],
counter = 0;
data_array.forEach(function(data) {
ops.push({
"updateOne": {
"filter": {
"product_id": data.product_id,
"post_modified": { "$ne": data.post_modified }
},
"update": { "$set": data },
"upsert": true
}
});
counter++;
if (counter % 500 == 0) {
collection.bulkWrite(ops, function(err, r) {
// do something with result
});
ops = [];
}
})
if (counter % 500 != 0) {
collection.bulkWrite(ops, function(err, r) {
// do something with result
}
}