如果我们想要插入与现有文档具有相同_id
的文档,是否有办法告诉MongoDB跳过(而不是崩溃)?
说,我有这个清单,我想坚持下去:
to_mongo = [
{'_id': 'aaaaaa', 'content': 'hey'},
{'_id': 'bbbbbb', 'content': 'you'},
{'_id': 'aaaaaa', 'content': 'hey'}
]
mongo_collection.insert_many(to_mongo)
我希望忽略最后一项,而不是导致整个请求崩溃。
答案 0 :(得分:3)
尝试使用 insert_many()
方法中的ordered=False
,即
to_mongo = [
{'_id': 'aaaaaa', 'content': 'hey'},
{'_id': 'bbbbbb', 'content': 'you'},
{'_id': 'aaaaaa', 'content': 'hey'}
]
mongo_collection.insert_many(to_mongo, ordered=False)
这确保即使存在错误也会尝试所有写入操作。来自docs:
ordered (可选):如果插入True(默认)文档 在服务器上按顺序,按提供的顺序。如果全部发生错误 剩余的插入被中止。如果为False,将插入文档 服务器以任意顺序,可能并行,以及所有文档 将尝试插入。