Mongodb 在Mongo3中创建索引

Mongodb 在Mongo3中创建索引,mongodb,Mongodb,我想创建一个索引,这样我的数据库就不允许我插入其键lema的值已经存在于数据库的某个文档中的文档。我这样做: db.version() 3.0.14 > db.rae.ensureIndex({"lema":1, unique: true}) { "createdCollectionAutomatically" : false, "numIndexesBefore" : 2, "numIndexesAfter" : 2, "note" : "all inde

我想创建一个索引,这样我的数据库就不允许我插入其键
lema
的值已经存在于数据库的某个文档中的文档。我这样做:

db.version()
3.0.14
> db.rae.ensureIndex({"lema":1, unique: true})
{
    "createdCollectionAutomatically" : false,
    "numIndexesBefore" : 2,
    "numIndexesAfter" : 2,
    "note" : "all indexes already exist",
    "ok" : 1
}
> db.rae.insert({"lema":"a"})
WriteResult({ "nInserted" : 1 })
> db.rae.insert({"lema":"a"})
WriteResult({ "nInserted" : 1 })
> db.rae.insert({"lema":"a"})
WriteResult({ "nInserted" : 1 })
> db.rae.find()
{ "_id" : ObjectId("591a0ce372329f3162a314cc"), "lema" : "a" }
{ "_id" : ObjectId("591a0ce472329f3162a314cd"), "lema" : "a" }
{ "_id" : ObjectId("591a0ce572329f3162a314ce"), "lema" : "a" }

很明显,DB允许我插入
lema
的值都是
a
的文档。我怎样才能解决这个问题?非常感谢Stennie的评论:


我应该使用
createIndex
而不是
ensureIndex
。还有一个错误,我应该使用
db.rae.createIndex({“lema”:1},{unique:true})

db.rae.getIndexes()的输出是什么?消息“所有索引都已存在”表明您在
lema:1
上已经有一个非唯一索引。在这种情况下,您需要删除所有重复的值,删除现有的
lema:1
索引,然后创建唯一的索引。@Stennie,我删除了整个集合并再次创建了它。这是结果:
>db.rae.getIndexes()[{“v”:1,“key”:{“\u-id”:1},“name”:“\u-id”,“ns”:“tweets.rae”}]
@Stennie我应该像我那样继续创建索引吗?你的语法不太正确(唯一选项缺少大括号)您还应该使用
createIndex
,而不是不推荐使用的
ensureIndex
。试试:
db.rae.createIndex({“lema”:1},{unique:true})
@Stennie谢谢,你能把这个作为一个答案,这样问题就不会一直没有答案了吗?