Stworzyłem rzadki i unikalny indeks na mojej kolekcji mongodb.Mongodb unikalny rzadki indeks
var Account = new Schema({
email: { type: String, index: {unique: true, sparse: true} },
....
Został utworzony poprawnie:
{ "ns" : "MyDB.accounts", "key" : { "email" : 1 }, "name" : "email_1", "unique" : true, "sparse" : true, "background" : true, "safe" : null }
Ale jeśli wstawić drugi dokument z kluczem nie została ustawiona otrzymuję ten błąd:
{ [MongoError: E11000 duplicate key error index: MyDB.accounts.$email_1 dup key: { : null }]
name: 'MongoError',
err: 'E11000 duplicate key error index: MyDB.accounts.$email_1 dup key: { : null }',
code: 11000,
n: 0,
ok: 1 }
Wszelkie wskazówki?
można sprawdzić w kolekcji, jeśli istnieje dokument o polu "null" dla adresu e-mail. Może się zdarzyć, że mechanizm szablonu, którego używasz, wstawia wartość pustą dla tego pola. Sprawdzam lokalnie, działa dobrze. –
Ustawiając 'email' na' unique', musi być unikatowe dla każdego dokumentu w kolekcji. Na przykład tylko jedna wartość 'null'. Wygląda na to, że działa zgodnie z oczekiwaniami. – WiredPrairie
Właśnie odpowiedziałem na to pytanie: http://stackoverflow.com/questions/17114851/mongo-id-field-duplicate-key-error/17115770#17115770 - to bardzo podobny (i prawdopodobnie ten sam) problem. – WiredPrairie