MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Beste Möglichkeit, Mongodb-Dokumente mit Pymongo zu lesen und zu aktualisieren

Sie möchten die "Bulk Operations API" von MongoDB. Meistens mit MongoDB 2.6 eingeführt, also ein zwingender Grund für ein Upgrade, wenn Sie dies derzeit noch nicht getan haben.

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

Viel besser, da Sie nicht "jede" Anfrage an den Server senden, sondern nur einmal alle 1000 Anfragen. Die "Bulk-API" regelt dies tatsächlich etwas für Sie, aber Sie möchten dies wirklich ein wenig besser "verwalten" und nicht zu viel Speicher in Ihrer App verbrauchen.

Weg der Zukunft. Verwenden Sie es.