MySQL Document Store - недопустимое значение для аргумента при создании индекса - PullRequest
0 голосов
/ 22 октября 2018

Официальные документы \help createIndex и различны.

Я попытался следовать «руководству по оболочке», так как оно дало мне больше всего, но я все еще получаю:

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

Моя коллекция имеет имя и имя2, и я считаю, что это не имеет к этому никакого отношения.

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

Любая помощь будет принята с благодарностью

1 Ответ

0 голосов
/ 13 января 2019

Оказывается, что для «поля» в «полях» требуется JSONPath.Кроме того, TEXT потребует некоторой длины.

Официальная документация по этому вопросу строго отсутствует и даже имеет некоторые явные ошибки.Я понял это только в ходе попытки сделать эквивалент NoSQL в ALTER TABLE ADD UNIQUE INDEX some_index (field_one, field_two);, который кажется неподдерживаемым.

В любом случае, попробуйте это:

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

РЕДАКТИРОВАТЬ относительноуникальные индексы: Если вы добавляете в коллекцию обычный индекс, а затем заходите в рабочую среду, удаляете только что созданный вами индекс и повторно добавляете его как уникальный индекс, который, похоже, работает.Но это только для одного поля.

РЕДАКТИРОВАТЬ относительно уникальных индексов компоновки: Если вы создаете сгенерированный столбец, который объединяет два поля, которые вы хотите быть уникальными вместе, а затем применяете уникальный индекс кэто, это будет работать.

...