Sie möchten die "Bulk Operations API" von MongoDB. Meistens mit MongoDB 2.6 eingeführt, also ein zwingender Grund für ein Upgrade, wenn Sie dies derzeit noch nicht getan haben.
bulk = db.coll.initialize_ordered_bulk_op()
counter = 0
for record in coll.find(snapshot=True):
# now process in bulk
# calc value first
bulk.find({ '_id': record['_id'] }).update({ '$set': { 'field': newValue } })
counter += 1
if counter % 1000 == 0:
bulk.execute()
bulk = db.coll.initialize_ordered_bulk_op()
if counter % 1000 != 0:
bulk.execute()
Viel besser, da Sie nicht "jede" Anfrage an den Server senden, sondern nur einmal alle 1000 Anfragen. Die "Bulk-API" regelt dies tatsächlich etwas für Sie, aber Sie möchten dies wirklich ein wenig besser "verwalten" und nicht zu viel Speicher in Ihrer App verbrauchen.
Weg der Zukunft. Verwenden Sie es.