Du vil have "Bulk Operations API" fra MongoDB. For det meste introduceret med MongoDB 2.6, så en overbevisende grund til at opgradere, hvis du ikke har i øjeblikket.
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()
Meget bedre, da du ikke sender "hver" anmodning til serveren, kun én gang for hver 1000 anmodninger. "Bulk API" løser det faktisk lidt for dig, men du vil virkelig gerne "administrere" dette lidt bedre og ikke forbruge for meget hukommelse i din app.
Fremtidens vej. Brug det.