在mongo 3中创建索引

时间:2017-05-15 20:20:39

标签: mongodb

我想创建一个索引,以便我的DB不允许我插入其密钥lema的值已存在于DB的某个文档中的文档。我这样做了:

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" }

显然,数据库允许我插入值lema全部为a的文档。我怎样才能解决这个问题?非常感谢

1 个答案:

答案 0 :(得分:0)

来自Stennie的评论:

我应该使用postDelayed代替createIndex。我也犯了一个错误,我应该使用ensureIndex