【问题标题】:MySQL Document Store - Invalid value for argument when creating indexMySQL Document Store - 创建索引时参数的值无效
【发布时间】:2019-01-13 12:11:17
【问题描述】:

\help createIndexOfficial Docs 是不同的。

我尝试遵循“shell 手册”,因为它让我走得最远,但我仍然得到:

db.col.createIndex("name", {"fields": [{"field": "name", "type": "TEXT"}, {"field": "name2", "type": "TEXT"}]})
Invalid value for argument 'fields[0].field' (MySQL Error 5017)

我的收藏有name和name2,我相信这与它无关。

db.col.find()
[
    {
        "_id": "00005bcdb19f0000000000000001",
        "a": [
            1,
            2
        ],
        "name": "chen",
        "name2": "chen"
    }
]
1 document in set (0.0034 sec)

任何帮助将不胜感激

【问题讨论】:

    标签: mysql document-store


    【解决方案1】:

    原来“fields”中的“field”需要一个JSONPath。此外,TEXT 需要一些长度。

    这方面的官方文档严重缺乏,甚至有一些明显的错误。我只是在尝试执行与 ALTER TABLE ADD UNIQUE INDEX some_index (field_one, field_two); 等效的 NoSQL 的过程中才发现这一点,这似乎不受支持。

    不管怎样,试试这个:

    db.col.createIndex(
        "name", {
            "fields": [
                {"field": "$.name", "type": "TEXT(64)"},
                {"field": "$.name2", "type": "TEXT(64)"}
            ]
        }
    )
    

    关于唯一索引的编辑: 如果您将常规索引添加到集合中,然后进入工作台并删除您刚刚创建的索引并将其重新添加为唯一索引,那么这似乎可以工作。但这只是针对单个字段。

    关于复合唯一索引的编辑: 如果您创建一个生成的列,将您希望唯一的两个字段连接在一起,然后在其上应用唯一索引,那将起作用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-07
      • 1970-01-01
      • 1970-01-01
      • 2017-10-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多