避免使用mongodb重复文档而不使用唯一索引
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了避免使用mongodb重复文档而不使用唯一索引相关的知识,希望对你有一定的参考价值。
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
答案
Upsert是避免重复条目的另一种方法,批量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();
以上是关于避免使用mongodb重复文档而不使用唯一索引的主要内容,如果未能解决你的问题,请参考以下文章