MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Melhor maneira de ler e atualizar documentos mongodb usando pymongo


Você deseja a "API de operações em massa" do MongoDB. Principalmente introduzido com o MongoDB 2.6, portanto, uma razão convincente para atualizar se você ainda não o fez.
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()

Muito melhor, pois você não está enviando "todas" solicitações para o servidor, apenas uma vez a cada 1000 solicitações. A "API em massa" realmente resolve isso para você, mas na verdade você quer "gerenciar" isso um pouco melhor e não consumir muita memória em seu aplicativo.

Caminho do futuro. Use-o.