问题描述
我有一个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