2014-07-22 47 views
1

我正在尝试学习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 
} 

我无法弄清楚我所做的错误。请帮忙。

+0

什么是db.myFirstCollectio.getIndexes()显示? – Wilbeibi

+2

当我在shell中尝试你的代码时,它工作正常。该错误消息意味着'myFirstCollection'中还有其他文档没有'name'字段。 – JohnnyHK

+0

尝试将'sparse'指定为'true',这样如果文档没有该字段,它们将不会包含在索引中。即:'db.myFirstCollection.ensureIndex({name:1},{unique:true,sparse:true})' – ujvl

回答

0

对于有问题的其他人,请注意字段名称区分大小写。

所以创建于{field1 : 1}的指数是不一样的{Field1 : 1}

相关问题