MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

E11000 дублиран ключов индекс на грешка в mongodb mongoose

Съобщението за грешка казва, че вече има запис с null като имейла. С други думи, вече имате потребител без имейл адрес.

Съответната документация за това:

Ако документът няма стойност за индексираното поле в уникален индекс, индексът ще съхранява нулева стойност за този документ. Поради уникалното ограничение, MongoDB ще разреши само един документ, който няма индексирано поле. Ако има повече от един документ без стойност за индексираното поле или липсва индексираното поле, изграждането на индекса ще се провали с грешка с дублиран ключ.

Можете да комбинирате уникалното ограничение с разредения индекс, за да филтрирате тези нулеви стойности от уникалния индекс и да избегнете грешката.

уникални индекси

Редките индекси съдържат само записи за документи, които имат индексирано поле, дори ако индексното поле съдържа нулева стойност.

С други думи, рядък индекс е добре с множество документи, всички с null стойности.

редки индекси

От коментари:

Вашата грешка казва, че ключът е с име mydb.users.$email_1 което ме кара да подозирам, че имате индекс и на двата users.email и users.local.email (Първата е стара и неизползвана в момента). Премахването на поле от модел Mongoose не засяга базата данни. Проверете с mydb.users.getIndexes() ако случаят е такъв и премахнете ръчно нежелания индекс с mydb.users.dropIndex(<name>) .



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. $unwind обект в рамката за агрегиране

  2. Абсолютна стойност с рамката за агрегиране на MongoDB

  3. Автоматизиране и управление на MongoDB в облака

  4. Метеор има ли отделна заявка за колекции?

  5. GSSException:Не са предоставени валидни идентификационни данни (ниво на механизма:Неуспешно намиране на Kerberos tgt)