Mongo Shell创建唯一索引无效问题咨询
问题分析与解决
1. 核心拼写错误
你执行的命令里存在明显的拼写失误:将unique误写为unqiue。MongoDB会自动忽略无法识别的参数,因此你的索引并没有应用唯一约束,只是创建了一个普通的文本索引。
正确的参数拼写应为unique:true。
2. 废弃参数问题
你使用的dropDups: true参数在MongoDB 3.0及以上版本已被废弃,不再生效。如果集合中存在重复的username值,直接创建唯一索引会失败,需要先手动清理重复数据,再创建索引。
3. 索引类型选择建议
你的需求是保证username字段唯一,其实不需要创建文本索引(文本索引用于全文搜索场景),创建单字段的唯一索引才是更高效、更贴合需求的选择:
// 正确创建单字段唯一索引的命令 db.users.createIndex({username: 1}, {unique: true})
如果确实需要针对username创建带唯一约束的文本索引,修正拼写后的命令如下:
db.users.createIndex({username: 'text'}, {unique: true})
内容的提问来源于stack exchange,提问作者groot
相关产品推荐
相关产品推荐

