Link to similar problem
(假设上面的链接提供了上下文)
在非常有限的时间内,在我的情况下,Mongodb会收到很多连接。在此时间跨度内,如果发生任何insert
,则会创建多个重复文档。
请注意,从代码中,我只保存一个文档。但是,mongodb存储具有不同_id
s的重复项。
许多解决方案建议在收集时添加唯一索引,但在我的情况下是不可能的。
确保对于一次插入操作,数据库中只有一个条目的最佳方法是什么?
另外,它创建重复文档的原因是什么?我用的是mongoengine。是mongodb
,mongoengine
或webserver
(apache
)是否正在重试insert
来电?为什么?
使用的版本:
mongoengine 0.8.7
pymongo 2.8.1
mongodb 2.6.12
Python 2.7.12
答案 0 :(得分:1)
Upsert 是另一种避免重复输入的方法,批量上传文档bulk upsert pymongo
updateBulk = db.collection.initialize_unordered_bulk_op()
updateBulk.find({
"field1":"field1",
"field2":"field2",
...
...
...
"fieldn":"fieldn"
}).upsert().update_one({'$set': {
"field1":"field1",
"field2":"field2",
...
...
...
"fieldn":"fieldn",
}})
result1 = updateBulk.execute();