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を使用しています。