sql >> Base de Datos >  >> NoSQL >> MongoDB

La mejor manera de leer y actualizar documentos mongodb usando pymongo

Desea la "API de operaciones masivas" de MongoDB. Presentado principalmente con MongoDB 2.6, por lo que es una razón convincente para actualizar si aún no lo ha hecho.

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()

Mucho mejor ya que no está enviando "todas" las solicitudes al servidor, solo una de cada 1000 solicitudes. La "API masiva" en realidad soluciona esto un poco, pero realmente desea "administrar" esto un poco mejor y no consumir demasiada memoria en su aplicación.

Camino del futuro. Úsalo.