Я хочу обновить тысячи документов в коллекции mongo. Я хочу найти их с помощью ObjectId, а затем, какой бы ни был документ, должен быть обновлен. Мое обновление одинаково для всех документов. У меня есть список ObjectId. Для каждого ObjectId в списке, Монго должны найти соответствующий документ и обновить «isBad» ключ этого документа «N»Массовое обновление в Pymongo с использованием нескольких ObjectId
ids = [ObjectId('56ac9d3fa722f1029b75b128'), ObjectId('56ac8961a722f10249ad0ad1')]
bulk = db.testdata.initialize_unordered_bulk_op()
bulk.find({ '_id': ids}).update({ '$set': { "isBad" : "N" } })
print bulk.execute()
Это дает мне результат:
{'nModified': 0, 'nUpserted': 0, 'nMatched': 0, 'writeErrors': [], 'upserted': [], 'writeConcernErrors': [], 'nRemoved': 0, 'nInserted': 0}
Это, как ожидается, потому что он пытается для соответствия «_id» со списком. Но я не знаю, как действовать.
Я знаю, как обновлять каждый документ по отдельности. Мой размер списка составляет порядка 25000. Я не хочу делать 25000 звонков индивидуально. Количество документов в моей коллекции намного больше. Я использую python2, pymongo = 3.2.1.
Почему вам нужно 'range' this неэффективен. – styvane