1

The\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)

任何帮助,将不胜感激

4

1 回答 1

0

原来“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)"}
        ]
    }
)

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

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

于 2019-01-13T02:55:32.467 回答