替换列表箱上的 PredExp

问题描述 投票:0回答:1

我有一个列表类型的垃圾箱。我想查询并获取该 bin 的值等于变量“val”的记录。使用 PredExp 可以通过以下方式完成:

predExps = Arrays.asList(
PredExp.stringVar("v"),
PredExp.stringValue(String.valueOf(val)),
PredExp.stringEqual(),
PredExp.listBin(fieldName),
PredExp.listIterateOr("v")); 

PredExp 从 6.0.0 开始被弃用,如何复制相同的行为?我正在使用相同的表达式,但它没有按预期工作。

exp = Exp.build( 
ListExp.getByValue( 
ListReturnType.VALUE, Exp.val(String.valueOf(val)),
Exp.listBin(fieldName) ) ); 

我使用表达式来复制问题,但我想我可能必须在语句内部使用过滤器。我已经有一个过滤器在查询语句中传递。两个过滤器可以合并为一个吗?

java expression predicate aerospike
1个回答
0
投票

看起来你在这里问了同样的问题:https://discuss.aerospike.com/t/replacement-for-predexp-on-a-list-bin-of-strings/10657/2 - 我验证了你的表达构造。您在这里为您的问题添加了更多色彩。那么让我继续: 对于读取查询:

query(QueryPolicy policy, Statement stmt)
,您将在 Statement 对象中指定二级索引过滤器(如果您正在使用二级索引过滤器),并使用 QueryPolicy 对象指定要在与 SI 匹配的记录之后应用的过滤器表达式。

Statement.setFilter
——SI

QueryPolicy.filterExp
——用于基于表达式的后续过滤。如果您需要代码示例,请告诉我。

© www.soinside.com 2019 - 2024. All rights reserved.