确保独特的索引mongodb

我试图确保一个索引在MongoDB中是唯一的,即时通讯使用node.js,但它根本无法工作。

//ensures unique data only db.social_media.ensureIndex( { name: 1 }, { unique: true } ); db.social_media.insert({name:'stan'}, function(err, docs){ console.log(err); console.log(docs); }); db.social_media.insert({name:'stan'}, function(err, docs){ console.log(err); console.log(docs); }); 

以下输出是:

 null { name: 'stan', _id: 53e9d2ee88b96dd224c6333f } null { name: 'stan', _id: 53e9d2ee88b96dd224c63340 } 

这意味着两个文件插入 – 即使我特别指定“名称”应该是唯一的。 我在这里错过了什么?

在确保索引之前就开始插入文档,从而创build竞争条件。

如果您的集合包含重复的键,则无法创build唯一索引。

尝试下面的代码(但是首先确保你的集合是空的,或者至less不包含重复的键):

 //ensures unique data only db.social_media.ensureIndex({ name: 1 }, { unique: true }, function (err) { if (err) { console.log('ensureIndex failed', err); } else { db.social_media.insert({name:'stan'}, console.log); db.social_media.insert({name:'stan'}, console.log); } });