Je veux mettre à jour des milliers de documents dans la collection mongo. Je veux les trouver en utilisant ObjectId et ensuite quel document correspond, devrait être mis à jour. Ma mise à jour est la même pour tous les documents. J'ai la liste d'ObjectId. Pour chaque ObjectId dans la liste, mongo devrait trouver correspondant à documenter et mettre à jour « isBad » clé de ce document à « N »Mise à jour en masse dans Pymongo en utilisant plusieurs ObjectId
ids = [ObjectId('56ac9d3fa722f1029b75b128'), ObjectId('56ac8961a722f10249ad0ad1')]
bulk = db.testdata.initialize_unordered_bulk_op()
bulk.find({ '_id': ids}).update({ '$set': { "isBad" : "N" } })
print bulk.execute()
Cela me donne le résultat:
{'nModified': 0, 'nUpserted': 0, 'nMatched': 0, 'writeErrors': [], 'upserted': [], 'writeConcernErrors': [], 'nRemoved': 0, 'nInserted': 0}
Cela devrait, car il tente pour faire correspondre "_id" avec la liste. Mais je ne sais pas comment procéder.
Je sais comment mettre à jour chaque document individuellement. Ma taille de liste est de l'ordre de 25 000. Je ne veux pas faire 25 000 appels individuellement. Le nombre de documents dans ma collection est beaucoup plus. J'utilise python2, pymongo = 3.2.1.
pourquoi avez-vous besoin 'range' this est inefficace. – styvane