避免使用mongodb重复文档而不使用唯一索引

问题描述 投票:0回答:1

Link to similar problem (假设上面的链接提供上下文)

对于非常有限的持续时间,在我的情况下,Mongodb接收了很多连接。在此时间跨度内,如果发生任何insert,则会创建多个重复文档。

请注意,从代码中,我只保存一个文档。但是,mongodb存储了不同_ids的重复项。许多解决方案建议在收集时添加唯一索引,但在我的情况下是不可能的。

什么是确保对于一个插入操作,数据库中只有一个条目的最佳方法? 另外,它创建重复文档的原因是什么?我用的是mongoengine。是mongodbmongoenginewebserverapache)正在重试insert电话,为什么?

使用的版本: mongoengine 0.8.7 pymongo 2.8.1 mongodb 2.6.12 Python 2.7.12

python mongodb mongodb-query mongoengine
1个回答
1
投票

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();
© www.soinside.com 2019 - 2024. All rights reserved.