我正在尝试学习Mongodb中的索引。我创建了一个数据库,并收集如下:Mongodb-在现有集合上添加唯一索引
use mydb
db.createCollection("myFirstCollection")
one={name:"Helios"}
two={name:"Kepler"}
db.myFirstCollection.insert(one)
db.myFirstCollection.insert(two)
我能列出我的结果如下:
db.myFirstCollection.find()
{ "_id" : ObjectId("53cde256f8807057b6bd827b"), "name" : "Helios" }
{ "_id" : ObjectId("53cde25bf8807057b6bd827c"), "name" : "kepler" }
我想在球场上name
添加唯一索引。但是当我尝试时,得到以下错误
db.myFirstCollection.ensureIndex({name:1},{unique:true})
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 1,
"ok" : 0,
"errmsg" : "E11000 duplicate key error index: mydb.myFirstCollection.$name_1 dup key: { : null }",
"code" : 11000
}
我无法弄清楚我所做的错误。请帮忙。
什么是db.myFirstCollectio.getIndexes()显示? – Wilbeibi
当我在shell中尝试你的代码时,它工作正常。该错误消息意味着'myFirstCollection'中还有其他文档没有'name'字段。 – JohnnyHK
尝试将'sparse'指定为'true',这样如果文档没有该字段,它们将不会包含在索引中。即:'db.myFirstCollection.ensureIndex({name:1},{unique:true,sparse:true})' – ujvl