Det ser ud til, at du allerede havde dublerede værdier, før du foretog denne ændring.
Her er en testcase. Hav to dokumenter i din samling som dette, før du implementerer et indeks:
{ "timestamp" :ISODate("2014-06-02T04:09:22.683Z") }{ "timestamp" :ISODate("2014-06-02T04:09:22.683Z") }
Så med den grundlæggende liste:
var mongoose =require('mongoose'), Schema =mongoose.Schema; mongoose.connect('mongodb://localhost/test'); var stateChange =mongoose.Schema({ timestamp:{ type:Date, required:true, unique:true } }); var Change =mongoose.model( 'Change', stateChange ); var dato =ny dato(); var change =new Change({ timestamp:date }); change.save(function(err,change) { if (err) throw err; console.log( change ); var new_change =new Change({ timestamp:date }); new_change.save(function(err,change) { if (err) throw err; console.log( change); }); });
Du vil se, at begge dokumenter er tilføjet. Men sagen her er, at indekset ikke blev implementeret, fordi det forårsagede en fejl, du ikke så. Du kan tjekke dette i skallen.
db.changes.getIndicies()
Hvilket vil vise, at dit unikke indeks ikke blev oprettet:
[ { "v" :1, "key" :{ "_id" :1 }, "name" :"_id_", "ns" :"test.changes" }]
Hvis du startede igen og kun havde ét dokument fra originalen
{ "timestamp" :ISODate("2014-06-02T04:09:22.683Z") }
Derefter opretter kodeeksemplet ovenfor indekset og producerer en fejl i den anden indsættelse:
{ __v:0, tidsstempel:Mon 02. jun. 2014 14:29:44 GMT+1000 (EST), _id:538bfdb8961376867ae42e61 }/xxxxx/node_modules/mongoose/lib/utils; throw ersr:413. ^MongoError:insertDocument ::forårsaget af ::11000 E11000 duplicate key error index:test.changes.$timestamp_1 dup key:{ :new Date(1401683384647) }
Indekset oprettet korrekt denne gang:
[ { "v" :1, "key" :{ "_id" :1 }, "name" :"_id_", "ns" :"test.changes" }, { "v" :1, "unique" :true, "key" :{ "timestamp" :1 }, "name" :"timestamp_1", "ns" :"test.changes", "background" :true, "safe" :null } ]
Du bliver nødt til at gennemgå dine data for at fjerne de eksisterende dubletter eller bare acceptere brugen af dropDups
mulighed for automatisk at fjerne dem for dig.
Se også dokumentationsvejledningen:Opret et unikt indeks