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

Bedste måde at læse og opdatere mongodb-dokumenter ved hjælp af pymongo

Du vil have "Bulk Operations API" fra MongoDB. For det meste introduceret med MongoDB 2.6, så en overbevisende grund til at opgradere, hvis du ikke har i øjeblikket.

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

Meget bedre, da du ikke sender "hver" anmodning til serveren, kun én gang for hver 1000 anmodninger. "Bulk API" løser det faktisk lidt for dig, men du vil virkelig gerne "administrere" dette lidt bedre og ikke forbruge for meget hukommelse i din app.

Fremtidens vej. Brug det.



  1. Hvordan konverteres år og uge i året opnået fra MongoDB-forespørgsel til Joda datetime?

  2. hvordan man kontrollerer, om et dokument er opdateret eller indsat i MongoDB

  3. Design af mange-til-mange-relationer i MongoDB (i stedet for relationelle tabeller)

  4. Opdater et MongoEngine-dokument ved hjælp af en python-dict?