我正在尝试搜索相同的HazelcastJsonValue数据示例。
class A {
B[] listOfB;
}
class B {
int num;
String name;
}
一个对象以HazelcastJsonValue的形式出现在Hazelcast中,我想创建查询以获取所有包含B的对象,其中num = 10并且name = test使用谓词进行数组搜索的hazelcast查询
Predicate.equal("listOfB[any].name","test")
对于以上情况查询,我可以使用谓词进行查询
Predicate[] arrayOfPredicate = {Predicates.equal("listOfB[any].num",10)
,Predicates.equal("listOfB[any].name","test")};
Predicate p = Predicates.and(arrayOfPredicate);
System.out.println(p.toString()); // (listOfB[any].num=10 AND listOfB[any].name=test)
Hazelcast查询相同(listOfB [any] .num = 10 AND listOfB [any] .name = test)但这并没有给出预期的结果,而是出现了下面的结果
{
"listOfB": [
{
"num": 10,
"name": "ab"
},
{
"num": 11,
"name": "test"
}
]
}
所需的结果是
{
"listOfB": [
{
"num": 10,
"name": "test"
},
{
"num": 11,
"name": "xyz"
}
]
}
如何获得理想的结果?
以上两项均应返回到您的结果集中。不是吗?您想要any的事实对于上述数据将返回true。如果将过滤器限制为listOfB [0],则将返回第二个,但我确定您的意图是不只限于第一个。