MongoDB 5.0.6创建key字段唯一文本索引触发E11000错误求助
问题原因与解决方案
错误原因
你遇到的问题是因为误创建了文本类型的唯一索引,而非普通的单键唯一索引。MongoDB的文本索引会对文本做词干化处理——你的数据里key字段包含publisher和published,这两个词会被解析成同一个词根publish,触发文本索引的唯一约束,所以报错提示存在重复的publish键。
解决步骤
检查现有索引
先执行命令查看集合内的所有索引,确认错误的文本索引是否存在:db.collection.getIndexes()你会看到名为
key_text(或类似带text标识)的索引。删除错误的文本索引
找到对应索引名后执行删除命令:db.collection.dropIndex("key_text")(如果索引名不一致,替换成
getIndexes结果里的实际名称)创建正确的唯一单键索引
执行以下命令创建普通的唯一索引,指定key字段按升序排序并添加唯一约束:db.collection.createIndex({key: 1}, {unique: true})
验证
创建完成后,再次执行db.collection.getIndexes()确认新索引已创建。之后插入重复key值的文档时,会触发预期的唯一键错误,不会再出现词干化导致的误判。
内容的提问来源于stack exchange,提问作者sariDon
相关产品推荐
相关产品推荐

