индексируемое поле unset делает: E11000 коллекция ошибок дублированного ключа - PullRequest
0 голосов
/ 20 сентября 2019

У меня есть таблица «users» с индексом «phone». Когда я пытаюсь сбросить индексированное поле, оно в первый раз корректно сбрасывается, и этот запрос возвращает пользователей, у которых сейчас нет поля «phone»

db.getCollection('users').find({"phone":null})

но когда я пытаюсь отключить другой телефон пользователя, я получаю эту ошибку:

MongoError: E11000 duplicate key error collection: fflok.users index: phone_1 dup key: { : null }

, пожалуйста, помогите

, это запрос неустановленного поля

User.updateOne({ _id: userId }, {$unset: {phone: 1 }}, callback);

Ответы [ 2 ]

0 голосов
/ 20 сентября 2019

я попробовал этот код в схеме:

 phone: {type: String, trim: true, index: true, unique: true, sparse: true},

и в базе данных я выбрал разреженный по индексу: enter image description here

0 голосов
/ 20 сентября 2019

Попробуйте этот код.Это поможет вам.

User.update(
   { _id: userId },
   { $unset: { phone: ""} }
)
...