Chcete "rozhraní API pro hromadné operace" z MongoDB. Většinou představen s MongoDB 2.6, takže pádný důvod k upgradu, pokud v současné době nemáte.
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()
Mnohem lepší, protože neposíláte „každý“ požadavek na server, ale pouze jednou z 1000 požadavků. "Hromadné API" to ve skutečnosti trochu řeší za vás, ale ve skutečnosti to chcete "spravovat" trochu lépe a nespotřebovávat příliš mnoho paměti ve vaší aplikaci.
Cesta do budoucnosti. Použijte to.