首页 > 解决方案 > 如何在沙发库中使用 LIKE n1ql 查询?

问题描述

我想代表一个我还没有理解的问题。我向您展示以下示例。这是我的文件

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

现在,我想使用 n1ql 查询以获取匹配类型的文档,例如“8_%” 8_ 应该是字符串前缀

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

他们俩都不正确我是除了。响应应该只有一个文档是文档 4:{“type”:“8_”}。但是这个回应如下文件。

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

你能帮助我吗?谢谢你。我正在使用Couchbase 3.1.8。对不起我的英语不好

标签: spring-bootcouchbasen1ql

解决方案


以下查询应返回正确的结果

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 开始的


推荐阅读