在MongoDB insertMany期间跳过相同的id

时间:2016-05-03 17:31:00

标签: mongodb pymongo

如果我们想要插入与现有文档具有相同_id的文档,是否有办法告诉MongoDB跳过(而不是崩溃)?

说,我有这个清单,我想坚持下去:

to_mongo = [
    {'_id': 'aaaaaa', 'content': 'hey'},
    {'_id': 'bbbbbb', 'content': 'you'},
    {'_id': 'aaaaaa', 'content': 'hey'}
]

mongo_collection.insert_many(to_mongo)

我希望忽略最后一项,而不是导致整个请求崩溃。

1 个答案:

答案 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,将插入文档   服务器以任意顺序,可能并行,以及所有文档   将尝试插入。