Du vill ha "Bulk Operations API" från MongoDB. Mestadels introducerat med MongoDB 2.6, så en övertygande anledning att uppgradera om du för närvarande inte har gjort det.
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()
Mycket bättre eftersom du inte skickar "varje" förfrågan till servern, bara en gång av 1000 förfrågningar. "Bulk API" löser faktiskt det här något åt dig, men egentligen vill du "hantera" detta lite bättre och inte förbruka för mycket minne i din app.
Framtidens väg. Använd den.