MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

E11000 zduplikowany indeks błędu klucza w mongodb mongoose

Komunikat o błędzie mówi, że istnieje już rekord z null jako e-mail. Innymi słowy, masz już użytkownika bez adresu e-mail.

Odpowiednia dokumentacja do tego:

Jeśli dokument nie ma wartości dla indeksowanego pola w unikalnym indeksie, indeks będzie przechowywać wartość null dla tego dokumentu. Ze względu na unikatowe ograniczenie MongoDB zezwoli tylko na jeden dokument, który nie ma indeksowanego pola. Jeśli istnieje więcej niż jeden dokument bez wartości dla indeksowanego pola lub brakuje indeksowanego pola, budowanie indeksu nie powiedzie się z powodu błędu zduplikowanego klucza.

Możesz połączyć ograniczenie przez unikalność z indeksem rzadkim, aby odfiltrować te wartości null z unikalnego indeksu i uniknąć błędu.

unikalne indeksy

Indeksy rzadkie zawierają tylko wpisy dla dokumentów, które mają indeksowane pole, nawet jeśli pole indeksu zawiera wartość pustą.

Innymi słowy, rzadki indeks jest w porządku, gdy wiele dokumentów ma null wartości.

rzadkie indeksy

Z komentarzy:

Twój błąd mówi, że klucz ma nazwę mydb.users.$email_1 co sprawia, że ​​podejrzewam, że masz indeks na obu users.email i users.local.email (Pierwszy jest obecnie stary i nieużywany). Usunięcie pola z modelu Mongoose nie wpływa na bazę danych. Sprawdź za pomocą mydb.users.getIndexes() w takim przypadku i ręcznie usuń niechciany indeks za pomocą mydb.users.dropIndex(<name>) .



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Generowanie struktury do agregacji

  2. Mongo DB znajdź według nazwy pola z dowolną wartością

  3. Zbiorcza aktualizacja dokumentów w MongoDB

  4. Czy mongocli obsługuje adres URL formuły dla chipów Apple M1?

  5. Wstaw duży rekord do mongodb za pomocą powłoki mongo