MySQL Document Store - Неверное значение аргумента при создании индекса
\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)
Любая помощь будет оценена
0 ответов
Оказывается, что для "поля" в "полях" требуется 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)"}
]
}
)
РЕДАКТИРОВАТЬ относительно уникальных индексов: если вы добавляете в коллекцию обычный индекс, а затем заходите в рабочую среду, удаляете только что созданный вами индекс и повторно добавляете его как уникальный индекс, который, похоже, работает. Но это только для одного поля.
РЕДАКТИРОВАТЬ относительно уникальных индексов компоновки: если вы создаете сгенерированный столбец, который объединяет два поля, которые вы хотите быть уникальными вместе, а затем применяете уникальный индекс к нему, это будет работать.