У меня есть 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
модель:
дубликат ключа индекса ошибки в mongoengine
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' , но это не влияет на результат! – MDK
Умм. Я сам использую Mongoengine в различных проектах. ["Поля"] (http://docs.mongoengine.org/en/latest/apireference.html#fields) показывает все допустимые параметры. i.e 'page_id = StringField (обязательно = True)'. Но, как я уже сказал, у вас уже есть «уникальное» определение индекса, а другой элемент вставлен в это поле как «null». Вам нужно найти этот документ и внести в него изменения. Много документации по сопоставлению нулевых полей. –