sql >> Databasteknik >  >> NoSQL >> MongoDB

Bästa sättet att läsa och uppdatera mongodb-dokument med pymongo

Du vill ha "Bulk Operations API" från MongoDB. Mestadels introducerat med MongoDB 2.6, så en övertygande anledning att uppgradera om du för närvarande inte har gjort det.

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

Mycket bättre eftersom du inte skickar "varje" förfrågan till servern, bara en gång av 1000 förfrågningar. "Bulk API" löser faktiskt det här något åt ​​dig, men egentligen vill du "hantera" detta lite bättre och inte förbruka för mycket minne i din app.

Framtidens väg. Använd den.



  1. Hur kan jag köra Spring med MongoDB inaktiverat, men fortfarande installerat?

  2. MongoDB, Java:Hämta date-egenskap som UTC

  3. Hur kan jag använda not like på laravel mongodb?

  4. Hur kommer du åt attribut för ett objekt som frågas från Mongo i Meteor