Почему это частичноеFilterExpression вызывает ошибку? - PullRequest
0 голосов
/ 11 апреля 2019

У меня есть пользовательская схема, подобная этой, когда пользователь регистрируется, я хочу установить значение по умолчанию как нулевое, но также и иметь возможность установить это значение как уникальное.Я попробовал решение из этой записи Я буквально скопировал то же решение, однако я все еще получаю эту ошибку MongoError: E11000 duplicate key error index: ppp-ng-dev.users.$mobile_1 dup key: { : null }

Моя схема

const userSchema = new Schema({
    mobile: {
            type: Number, 
        required: false,
        index: {
            unique: true,
            partialFilterExpression: {mobile: {$exists: true }}
        },
        default: null,
    },
})

Почему я получаюэта ошибка, даже если синтаксис правильный?(Aparently)

1 Ответ

1 голос
/ 11 апреля 2019

Проблема заключается в том, что в коллекции имеется несколько документов со значением null для поля mobile.Это нарушает ограничение уникальности указанного индекса.Как отметил Джонни ХК в заявке, которую вы связали:

Обратите внимание, что уникальный, разреженный индекс по-прежнему не позволяет создавать несколько документов с полем электронной почты со значением null, только несколько документов без поля электронной почты.

В вашем конкретном случае partialFilterExpression указывает только на индексирование документов, где существует поле mobile, которое включает в себя документы, в которых поле определено и явно определено как null.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...