Ошибка запроса Couchbase N1QL по вложенному пути ключевого слова - PullRequest
2 голосов
/ 10 мая 2019

SELECT data FROM users WHERE data.role = "ADMIN"

Этот запрос возвращает ошибку из-за зарезервированного ключевого слова role из SQL.То же самое для password.Я создал индекс:

CREATE INDEX loginSearchIndex ON users( data.role ) USING GSI (использование `char - единственный способ, которым это работает. Если я сделаю то же самое в запросе, он не вернет никаких результатов.

Для вложенных объектов, у которых нет зарезервированных ключевых слов, он работает просто отлично. Есть идеи, как избежать экранированного ключевого слова при выполнении запроса N1QL?

Все тесты запроса выполненыв Query Workbenck

1 Ответ

1 голос
/ 10 мая 2019

Итак, немного покопавшись, я нашел, как это сделать

Создайте индекс, и вы можете использовать столько вложенных полей, сколько захотите, но используя `char:

CREATE INDEX loginSearchIndex ON users(data.`role`) USING GSI

Затем вы запускаете запрос

SELECT data FROM users WHERE data.`role` = "ADMIN"

Работает нормально

UPDATE : Если вы вложили JSON, вы можете заключить каждую клавишу в `. Не забудьте добавить необходимый индекс

SELECT data FROM users WHERE data.`children`.`rockets`.`elon`.`age` = "48"
...