Ho creato un indice sparse e univoco sulla mia raccolta mongodb.Indice sparse unico di Mongodb
var Account = new Schema({
email: { type: String, index: {unique: true, sparse: true} },
....
E 'stato creato correttamente:
{ "ns" : "MyDB.accounts", "key" : { "email" : 1 }, "name" : "email_1", "unique" : true, "sparse" : true, "background" : true, "safe" : null }
Ma se inserisco un secondo documento con una chiave non set riceverò questo errore:
{ [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 }
Eventuali suggerimenti?
puoi verificare nella raccolta, se c'è qualche documento con 'null' per campo di posta elettronica. Potrebbe accadere che il motore di template che stai utilizzando stia inserendo un valore nullo per quel campo. Controllo localmente, sta funzionando bene. –
Impostando 'email' su' unique', è necessario che sia univoco per ogni documento nella raccolta. Ad esempio, solo un valore 'nullo'. Quindi, sembra che funzioni come previsto. – WiredPrairie
Ho appena risposto a questa domanda: http://stackoverflow.com/questions/17114851/mongo-id-field-duplicate-key-error/17115770#17115770 - è molto simile (e probabilmente lo stesso) problema. – WiredPrairie