在hazelcast jsonvalues中查询数组

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

我正在尝试搜索相同的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"
    }
  ]
}

如何获得理想的结果?

arrays hazelcast hazelcast-imap
1个回答
0
投票

以上两项均应返回到您的结果集中。不是吗?您想要any的事实对于上述数据将返回true。如果将过滤器限制为listOfB [0],则将返回第二个,但我确定您的意图是不只限于第一个。

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