NotUniqueError: Tried to save duplicate unique keys

NotUniqueError: Tried to save duplicate unique keys

我不断收到上述错误。我删除了设置为唯一的现有数据库字段 id。但是在保存时我得到了以下异常

raise NotUniqueError(message % unicode(err))
NotUniqueError: Tried to save duplicate unique keys (E11000 duplicate key error index: test.users.$id_1  dup key: { : null })

我的usertable长得像,

class Users(db.Document, UserMixin):
    name = db.StringField(max_length=50)
    email = db.StringField(max_length=255)
    password = db.StringField(max_length=255)
    city = db.StringField(max_length=125)
    active = db.BooleanField(default=True)
    company =  db.StringField(max_length=255)
    type = db.StringField(max_length=15)
    confirmed_at = db.DateTimeField()
    role = db.ReferenceField(Role)

    meta = {'strict': False}

我还尝试使用

取消设置 id 属性
cls.objects.update(**{"unset__id": 1})

但是它抛出这个异常,

raise OperationError(u'Update failed (%s)' % unicode(err))
OperationError: Update failed (Mod on _id not allowed)

我只想保存没有 id 字段的用户模型。

如果调用 list_indexes() 它将在 id 字段上显示一个唯一索引。

您还需要使用 db.collection.dropIndex() 删除集合中 id 字段的唯一索引。

我不确定 mongoengine 是否提供 drop_index class 方法,但您可以从 shell.

中执行此操作