【发布时间】:2015-10-01 14:57:40
【问题描述】:
我有一个Page 模型如下,page_id 字段不是unique,但我无法从Page 创建实例并且此错误上升
OperationError: Could not save document (insertDocument :: caused by ::11000 E11000 duplicate key error index: shopify.page.$pageId_1 dup key: { : null })
我不知道为什么当page_id 字段不是unique 时会出现重复键错误
Site 型号:
class Page(Document):
# page identity
page_id = StringField()
store = ReferenceField('Store')
is_product = BooleanField(default = False)
is_homepage = BooleanField(default = False)
product = ReferenceField('Product')
requests = ListField(EmbeddedDocumentField('Request'))
# page stat
visitors = IntField(default = 0)
views = IntField(default = 0)
past_days = ListField(EmbeddedDocumentField('DayStat'))
【问题讨论】:
-
所以您已经在字段上定义了一个“唯一”键。如果不在类定义中,则通过外部脚本在其他地方。您可能应该使用
required作为page_id的参数,因为您似乎提供了一个新对象而没有为该字段定义值。和“两次”。因此重复。 -
@BlakesSeven 一开始我使用
required作为page_id的参数,但它对结果没有任何影响! -
嗯。我自己在各种项目中使用 Mongoengine。 "Fields" 显示所有有效选项。即
page_id = StringField(required=True)。但正如我所说,您已经有一个“唯一”索引定义和另一个插入该字段的项目为null。您需要找到该文件并对其进行修改。大量关于匹配空字段的文档。 -
这个模型有没有可能除了我写的字段还有其他字段!除了 mongoid 字段,因为错误提到
pageId_1是问题,而page_id过去是pageId@BlakesSeven -
l“索引名称”和“字段名称”不一定是同一个东西。我可以从您的类定义中看到您没有在那里定义索引。它是在外部创建的。看看
page_id没有默认值,抱怨“重复”索引已经是null?从逻辑上讲,这表明该领域是问题所在。检查“索引”定义或询问团队中知道如何执行此操作的人员。或在线搜索。
标签: mongodb mongoengine