我有一个MongoDB(v 5.0.6)集合,其中包含以下数据:
[{
"_id": {
"$oid": "63bc06e6aa310000d6004a68"
},
"key": "title",
"label": "title",
"type": "text",
"searchable": 0
},{
"_id": {
"$oid": "63bc06e6aa310000d6004a69"
},
"key": "attribution",
"label": "attribution",
"type": "text",
"searchable": 0
},{
"_id": {
"$oid": "63bc06e6aa310000d6004a6a"
},
"key": "description",
"label": "description",
"type": "text",
"searchable": 0
},{
"_id": {
"$oid": "63bc06e6aa310000d6004a6b"
},
"key": "publisher",
"label": "publisher",
"type": "text",
"searchable": 0
},{
"_id": {
"$oid": "63bc06e6aa310000d6004a6c"
},
"key": "published",
"label": "published",
"type": "number",
"searchable": 0
},{
"_id": {
"$oid": "63bc06e6aa310000d6004a6d"
},
"key": "author",
"label": "author",
"type": "text",
"searchable": 0
}]
现在我想在key
(文本)字段上建立一个唯一的索引,但是每次我试图创建索引时,都会产生这样的错误:
索引构建失败:编号64014369- 44 e7 -4371- 976 a-25 f0 aed 89614:采集数据库采集(c9 b12814 - 686 b-4603- 8 e90-bba 31 f67 d930)::原因:E11000重复键错误收集:数据库集合索引:key_text向上键:{ _fts:“发布”,_ftsx:1.0年
我不知道为什么会出现这种情况。正如错误所指示的,数据中没有与“publish”匹配的值。有人能看一下并提供帮助吗?提前感谢您经历了这么多,如果您能指出解决方案,请提供更多信息。
2条答案
按热度按时间uxhixvfz1#
现在我想在键(文本)字段上设置一个唯一索引。
MongoDB中没有“文本”字段。字段类型如下所示:https://www.mongodb.com/docs/manual/reference/bson-types/和
key
是一个“字符串”。索引类型为以下类型之一:
您选择的是后者,此处介绍了https://www.mongodb.com/docs/manual/core/index-text/
创建唯一的全文索引没有什么意义。如果至少有一个单词(post-stemed)出现在另一个文档中,它将违反唯一性。在您的示例中,它们是
published
和publisher
。公共词干是publish
。请使用
asc
或desc
类型中的一个为整个key
建立唯一索引。只有当键相同时才会违反唯一性。a2mppw5e2#
我使用控制台运行这个命令,它的工作(指标反映在指南针太):
希望能帮上忙。