MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Il modo migliore per leggere e aggiornare i documenti mongodb usando pymongo

Vuoi la "Bulk Operations API" da MongoDB. Introdotto principalmente con MongoDB 2.6, quindi un motivo convincente per eseguire l'aggiornamento se attualmente non lo hai fatto.

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

Molto meglio perché non stai inviando "ogni" richiesta al server, solo una volta ogni 1000 richieste. L'"API Bulk" in realtà risolve in qualche modo questo problema, ma in realtà vuoi "gestirlo" un po' meglio e non consumare troppa memoria nella tua app.

Via del futuro. Usalo.