Pythonライブラリpymongo
を使用してMongoDBにドキュメントを一括挿入しようとしています。BulkWriteErrorのためにpymongoを使用したバルク挿入マッピング配列
import pymongo
def tryManyInsert():
p = {'x' : 1, 'y' : True, 'z': None}
mongoColl = pymongo.MongoClient('localhost', 27017)['test']['multiIn']
mongoColl.insert_many([p for i in range(10)])
tryManyInsert()
しかし、私はBulkWriteError
のために失敗し続けます。
Traceback (most recent call last):
File "/prog_path/testMongoCon.py", line 9, in <module>
tryManyInsert();
File "/prog_path/testMongoCon.py", line 7, in tryManyInsert
mongoColl.insert_many([p for i in range(10)])
File "/myenv_path/lib/python3.6/site-packages/pymongo/collection.py", line 724, in insert_many
blk.execute(self.write_concern.document)
File "/myenv_path/lib/python3.6/site-packages/pymongo/bulk.py", line 493, in execute
return self.execute_command(sock_info, generator, write_concern)
File "/myenv_path/lib/python3.6/site-packages/pymongo/bulk.py", line 331, in execute_command
raise BulkWriteError(full_result)
pymongo.errors.BulkWriteError: batch op errors occurred
私はこのanswer/discussionの条件は、ここでは適用されませんので_id
ずに順次のみ10ドキュメントを挿入しようとしています。同様のquestionには答えがありません。
私はpymongo 3.4
とpymongo 3.5.1
を試しましたが、両方とも同じエラーが発生します。私はpython3.6
、mongodb 3.2.10
です。 ここで何が間違っていますか?
はい、ありがとうございます。私は[docs](https://api.mongodb.com/python/3.5.1/tutorial.html)をもっと慎重に読んでいたはずです。 'ドキュメントが挿入されると、特別なキー" _id "が自動的に追加されます文書にまだ "_id"キーが含まれていない場合。 – parthasarathy
@parthasarathyそれはその一部ですが、実際のところここではpythonがオブジェクトの割り当てをどのように処理するかが重要です。したがって、ここでの主な違いは、配列にマップされる「同じ参照」とは対照的に「コピー」です。 –