Как использовать LIKE n1ql запрос в couchbase? - PullRequest
2 голосов
/ 28 февраля 2020

Я хочу представить вопрос, который я еще не понял. Я покажу вам следующий пример. Это мои документы

doc 1 : {"type":"81"}
doc 2 : {"type":"81_"}
doc 3 : {"type":"8"}
doc 4 : {"type":"8_"}
doc 5 : {"type":"13"}

А теперь я хочу запросить, используя n1ql, чтобы выбрать документы, которые соответствуют типу типа "8 _%" 8_, должен иметь префикс String

@Query("#{#n1ql.selectEntity} where code like "8_%" ") 
**or**
@Query("#{#n1ql.selectEntity} where code like (concat(8,_,'%')) ")

Они оба не верны, но я должен ответить только на один ответ c is do c 4: {"type": "8 _"} . Но этот ответ следующие документы.

 doc 1 : {"type":"81"}
 doc 2 : {"type":"81_"}
 doc 3 : {"type":"8"}
 doc 4 : {"type":"8_"}

Можете ли вы помочь мне в ситуации? Спасибо заранее. Я использую Couchbase 3.1.8 . Извините, мой плохой англ sh

1 Ответ

1 голос
/ 29 февраля 2020

Следующий запрос должен возвращать правильные результаты

SELECT META().id FROM mybucket WHERE type LIKE "8_%"

Соответствует строке с выражением подстановочного знака. Используйте% для нуля или более подстановочных знаков и _, чтобы сопоставить любой символ в этом месте в строке (https://docs.couchbase.com/server/current/n1ql/n1ql-language-reference/comparisonops.html)

Если вы хотите сопоставить _, поскольку оно экранирует его.

SELECT META().id FROM mybucket WHERE type LIKE "8\\_%";

Если вы используете Couchbase 3.1.8, он очень старый и вам следует попробовать последнюю версию Couchbase 6.5.0.

Я думаю, что выпуск N1QL запущен в Couchbase 4.0.0

...