如何使用Java API查询所有那些数组类型字段包含给定数组至少一个元素的实体?

问题描述

我有一个GCP数据存储区实体,该实体的数组类型字段包含一个元素列表,例如[1,2,3]

示例:

@Entity
public class TestEntity{

   @Id
   String id;

   List<String> data;
}

我需要使用GCP Java API构建查询,以选择在字段中具有给定数组至少一个元素的所有实体。

示例: 两个实体: 1:[1,3] 2:[1,4,5] 我希望选择输入: [1,2]-1,2; [2]-1

  EntityQuery.Builder queryBuilder =
                    Query.newEntityQueryBuilder().setKind("testEntity");
  queryBuilder.setFilter(....)

我在API中看不到类似“包含”或“在其中”的过滤器。如何建立这样的查询

解决方法

数据存储模式对每个唯一的数组属性值索引一次。因此,要查询数组是否包含值,请使用相等过滤器。 [1]

.setFilter(PropertyFilter.eq(property,value))

[1] https://cloud.google.com/datastore/docs/concepts/queries#array_values