创建MongoDB唯一索引时出现错误E11000

relj7zay  于 2023-01-12  发布在  Go
关注(0)|答案(2)|浏览(151)

我有一个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”匹配的值。有人能看一下并提供帮助吗?提前感谢您经历了这么多,如果您能指出解决方案,请提供更多信息。

uxhixvfz

uxhixvfz1#

现在我想在键(文本)字段上设置一个唯一索引。
MongoDB中没有“文本”字段。字段类型如下所示:https://www.mongodb.com/docs/manual/reference/bson-types/key是一个“字符串”。
索引类型为以下类型之一:

  • 上升
  • 描述
  • 地理空间的
  • 全文

您选择的是后者,此处介绍了https://www.mongodb.com/docs/manual/core/index-text/
创建唯一的全文索引没有什么意义。如果至少有一个单词(post-stemed)出现在另一个文档中,它将违反唯一性。在您的示例中,它们是publishedpublisher。公共词干是publish
请使用ascdesc类型中的一个为整个key建立唯一索引。只有当键相同时才会违反唯一性。

a2mppw5e

a2mppw5e2#

我使用控制台运行这个命令,它的工作(指标反映在指南针太):

db.<collection_name>.createIndex( { "key" : 1 }, { unique : true } )

希望能帮上忙。

相关问题