MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Meilleur moyen de lire et de mettre à jour les documents mongodb à l'aide de pymongo

Vous voulez l'"Bulk Operations API" de MongoDB. Principalement introduit avec MongoDB 2.6, donc une raison impérieuse de mettre à niveau si ce n'est pas le cas actuellement.

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

Bien mieux car vous n'envoyez pas "toutes" les requêtes au serveur, juste une fois sur 1000 requêtes. L'"API de transfert en masse" règle cela un peu pour vous, mais vous voulez vraiment "gérer" cela un peu mieux et ne pas consommer trop de mémoire dans votre application.

Voie du futur. Utilisez-le.