ऐसा करने का सबसे अच्छा तरीका है सरणी तत्व से मेल खाना और अलग-अलग स्थिति के साथ अपडेट करना $
Bulk()
. का उपयोग करने वाला ऑपरेटर एपीआई। आपको वास्तव में अपने qty
को ब्लो नहीं करना चाहिए सरणी।
var bulk = db.mycollection.initializeOrderedBulkOp(),
count = 0;
db.mycollection.find({ "code" : "efg" }).forEach(function(doc){
var qty = doc["qty"];
for (var idx = 0; idx < qty.length; idx++){
bulk.find({
"_id": doc._id,
"qty": { "$elemMatch": { "num": qty[idx]["num"]}}
}).update({ "$set": { "qty.$.num": 0 }})
}
count++;
if (count % 200 == 0) {
// Execute per 200 operations and re-init.
bulk.execute();
bulk = db.mycollection.initializeOrderedBulkOp();
}
})
// Clean up queues
if (count % 200 != 0)
bulk.execute();