sql >> Database teknologi >  >> NoSQL >> MongoDB

E11000 duplikatnøglefejlindeks i mongodb mongoose

Fejlmeddelelsen siger, at der allerede er en post med null som e-mailen. Du har med andre ord allerede en bruger uden en e-mailadresse.

Den relevante dokumentation herfor:

Hvis et dokument ikke har en værdi for det indekserede felt i et unikt indeks, vil indekset gemme en nulværdi for dette dokument. På grund af den unikke begrænsning vil MongoDB kun tillade ét dokument, der mangler det indekserede felt. Hvis der er mere end ét dokument uden en værdi for det indekserede felt eller mangler det indekserede felt, vil indeksopbygningen mislykkes med en dubletnøglefejl.

Du kan kombinere den unikke begrænsning med det sparsomme indeks for at filtrere disse nulværdier fra det unikke indeks og undgå fejlen.

unikke indekser

Sparsomme indekser indeholder kun poster for dokumenter, der har det indekserede felt, selvom indeksfeltet indeholder en nulværdi.

Med andre ord er et sparsomt indeks ok med flere dokumenter, der alle har null værdier.

sparsomme indekser

Fra kommentarer:

Din fejl siger, at nøglen hedder mydb.users.$email_1 hvilket får mig til at mistænke, at du har et indeks på begge users.email og users.local.email (Den førstnævnte er gammel og ubrugt i øjeblikket). Fjernelse af et felt fra en Mongoose-model påvirker ikke databasen. Tjek med mydb.users.getIndexes() hvis dette er tilfældet, og fjern manuelt det uønskede indeks med mydb.users.dropIndex(<name>) .



  1. MongoDB $cos

  2. hvordan man gemmer et billede i redis ved hjælp af python / PIL

  3. Brug jedis hvordan man skriver til en specifik slot/node i redis cluster

  4. AWS Lambda og Redis klient. Hvorfor kan jeg ikke ringe tilbage?