PyMongo抛出“E11000重复密钥错误索引”

2024-06-26 10:19:47 发布

您现在位置:Python中文网/ 问答频道 /正文

需要将重复的文档插入mongodb集合中,因此使用unique=True和{}创建索引。在

db.myCollection.create_index("timestamp", unique=True, dropDups=True)

但是,如果同一组文档被插入两次,第一次插入可以进行,但是第二次插入会抛出错误

^{pr2}$

DuplicateKeyError: E11000 duplicate key error index: myDb.myCollection.$timestamp_1 dup key: { : 1385290560000000000 }

我很困惑为什么dropDups=True不起作用。在


Tags: key文档truedbindexmongodb错误create
1条回答
网友
1楼 · 发布于 2024-06-26 10:19:47

dropDups只通过删除time of index creation处的重复文档来影响现有集合。但是,它不会在以后停止引发异常/错误。当您尝试插入同一文档两次时,如果您使用insert,则始终会引发错误。您可以考虑使用upsertreference)和via findAndModifyreference))来配置为有条件地应用新文档,而不是引发异常。在

如果可能,您可以考虑在本地保留时间戳的哈希值,以避免完全调用数据库(有时,您需要清除哈希表以防止无限增长)。在

或者,在插入数据之前不要启用索引(如果可能)。在

相关问题 更多 >