Anda menginginkan "API Operasi Massal" dari MongoDB. Sebagian besar diperkenalkan dengan MongoDB 2.6, jadi alasan kuat untuk memutakhirkan jika saat ini Anda belum melakukannya.
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()
Jauh lebih baik karena Anda tidak mengirim "setiap" permintaan ke server, hanya sekali dalam setiap 1000 permintaan. "API Massal" sebenarnya memilah ini untuk Anda, tetapi sebenarnya Anda ingin "mengelola" ini sedikit lebih baik dan tidak menghabiskan terlalu banyak memori di aplikasi Anda.
Cara masa depan. Gunakan.