Google Cloud Datastore:按属性列表查询

问题描述

我正在寻找如何通过属性列表在数据存储区中查询方法

所以,我有一个简单的实体:

@Data
@Entity(name = APPLICATION_KIND)
public class ApplicationEntity {

    @Id
    private String Id;

    private String appId;

    private String name;

    private String status;
}

我想按appIds的列表进行查找。但是,似乎数据存储区没有提供这种可能性。

DatastoreTemplate仅提供一种可能性-findAllById,但不适用于其他字段或其他过滤器(例如按状态)。

不幸的是,StructuredQuery.PropertyFilter也没有提供这种可能性。 StructuredQuery.CompositeFilter只有and,却没有orin

可能有人遇到相同的问题并以某种方式解决该问题?

解决方法

您可以将StructuredQuery.PropertyFilter中的每个属性列表作为数组传递;您可以点击以下链接:https://cloud.google.com/datastore/docs/concepts/queries#array_values

然后,对于ORIN,您可以编写GQL查询并执行如下查询:

SELECT * FROM analysis WHERE concepts CONTAINS concept;

在这里,分析实体包含一个概念列表。

, 数据存储区实际上支持

IN运算符,但不支持OR。有关更多信息,请参阅this documentation

您实际上可以执行以下操作:

SELECT * FROM APPS WHERE appId IN (abc,xyz,...)