【发布时间】:2019-12-27 05:05:07
【问题描述】:
我有一个包含用户名、密码和电子邮件的集合,所以我在 python 中使用 pymongo 创建了一个唯一索引:
import pymongo
info.create_index( [("Username", pymongo.TEXT), ("Email", pymongo.TEXT)],unique=True)
第一次插入:
mydict = { "Username": "userA","Email": "emailA@example.com"}
mycol.insert_one(mydict)
第二次插入:
mydict = { "Username": "userB","Email": "emailB@example.com"}
mycol.insert_one(mydict)
但是当我用第二次插入测试它时,它会抛出这个异常:
pymongo.errors.DuplicateKeyError: E11000 duplicate key error collection: users.info index: Username_text_Email_text dup key: { : "com", : 0.6666666666666666 }
我错过了什么吗?
【问题讨论】:
-
我认为这是stackoverflow.com/q/36649794/4711785的类似问题
-
你的两个插入是什么?他们是相同的用户名+电子邮件组合吗?如果是这样,那么这种行为是预期的,因为用户名+电子邮件的组合对于该集合中的每个文档都必须是唯一的。如果写入会导致冲突,则会抛出异常,如您在此处所见。如果您不希望程序崩溃,请务必将您的插入内容包装在 try/catch 块中并相应地处理异常。
-
@B.弗莱明对不起,我不清楚,我的第一个插入是例如 Username: userA 和 Email: EmailA@example.com ,当我插入 Username: userB 和 Email:EmailB@example.com 时,它会抛出该异常
-
我建议检查该用户当前是否存在并从那里开始。
标签: mongodb pymongo unique-index