n1ql查询

bwitn5fc  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(432)

我正在尝试查询id与我的密钥匹配的所有文档,例如:example\u key\u 123

Statement statement = select("META().id").from(i("bucketname")).where(x("META().id").like(x("'example\\_key%'")));
N1qlQueryResult res = bucket.query(N1qlQuery.simple(statement));

这是我正在尝试的代码,但是它不断地给我这个桶中的所有文档,而不仅仅是匹配的文档。当我在不转义下划线的情况下这样做时:

Statement statement = select("META().id").from(i("bucketname")).where(x("META().id").like(x("'example_key%'")));

它会一直持续下去,给我一个暂停。在intellij中尝试一个\给我一个编译器错误,说“字符串文字中的非法转义字符”
我使用的是CouchbaseServer4.5和JavaSDK2.7.15
编辑
解决方法是使用如下四个反斜杠:

example\\\\_key%
eoigrqb6

eoigrqb61#

下面是正确的查询。您可以尝试使用sql语句作为字符串(不使用dsl语句)

SELECT META().id 
FROM default 
WHERE META().id LIKE "example\\_key%";

也许可以试试这个。

like(s("example\\_key%"))

相关问题