我想更新 mongo 集合中的数千个文档。我想使用 ObjectId 找到它们,然后无论哪个文档匹配,都应该更新。我的更新对所有文件都是一样的。我有 ObjectId 的列表。对于列表中的每个 ObjectId,mongo 应该找到匹配的文档并将该文档的“isBad”键更新为“N”
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。