gpt4 book ai didi

mongodb - mongoengine 唯一约束

转载 作者:可可西里 更新时间:2023-11-01 09:59:10 25 4
gpt4 key购买 nike

我有这个模型:

class SourceModel(Document):
name = StringField(
primary_key=True,
max_length=50,
required=True,
)
# some fields

当我尝试运行这段代码时:

for source in SOURCES:
SourceModel(**source).save()

我有这个错误:

mongoengine.errors.NotUniqueError: Tried to save duplicate unique keys (E11000 duplicate key error index: mirad.source_model.$name_1  dup key: { : null })

我不知道为什么会出现这个错误,因为我的模型中没有 unique 字段。我将此代码更改为:

for source in SOURCES:

try:
SourceModel(**source).save()
except NotUniqueError:
old_source = SourceModel.objects(name=source['name']).first()
print old_source # this line print None

为什么

最佳答案

您的文档模型中可能没有定义唯一索引。但在某个时间点,为“名称”创建了一个唯一索引。

所以你需要在 mongodb 中删除该索引,你可以在 shell 中这样做:

 db = new Mongo().getDB("mirad");
db.source_model.dropIndex("name_1")

关于mongodb - mongoengine 唯一约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24524313/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com