我想创建一个索引,以便我的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
的文档。我怎样才能解决这个问题?非常感谢
答案 0 :(得分:0)
来自Stennie的评论:
我应该使用postDelayed
代替createIndex
。我也犯了一个错误,我应该使用ensureIndex
。