在不同的props上使用两个相等过滤器运行数据存储区查询

时间:2017-10-30 23:01:30

标签: google-app-engine datastore local-datastore

我有一个数据存储区查询,通过相等的方式过滤不同的道具,在调试查询后,我发现第二个过滤器只适用,第一个过滤器不会被查询占用。

以下是查询:

Query<Entity> query = Query.newEntityQueryBuilder().setKind("locations")
    .setFilter(StructuredQuery.PropertyFilter.eq("country",countryCode))
    .setFilter(StructuredQuery.PropertyFilter.eq("type",locationTypeCode))
    .build();

据我所知,当过滤不同的道具时,它应该有效,但在我的情况下不适用?

1 个答案:

答案 0 :(得分:1)

我最近自己尝试过这样做,从我看到的情况来看,在查询中添加多个过滤器只是覆盖了过滤器。复合滤波器解决了这个问题查询文档中有一节可能很有用:https://cloud.google.com/appengine/docs/standard/java/datastore/queries#query_interface_example

// Use CompositeFilter to combine multiple filters
CompositeFilter heightRangeFilter =
    CompositeFilterOperator.and(heightMinFilter, heightMaxFilter);

// Use class Query to assemble a query
Query q = new Query("Person").setFilter(heightRangeFilter);