运行 在不同属性上使用两个相等过滤器的数据存储区查询
Running Datastore query with two equality filter on different props
我有一个数据存储查询,通过相等过滤不同的道具,在调试查询后,我发现第二个过滤器只适用,第一个不被查询采用。
查询如下:
Query<Entity> query = Query.newEntityQueryBuilder().setKind("locations")
.setFilter(StructuredQuery.PropertyFilter.eq("country",countryCode))
.setFilter(StructuredQuery.PropertyFilter.eq("type",locationTypeCode))
.build();
据我所知,当过滤不同的道具时,它应该可以工作,但在我的情况下不适用?
我最近自己尝试这样做,据我所见,将多个过滤器添加到查询中只是覆盖了过滤器。复合过滤器解决了这个问题。查询文档中有一个部分可能有用: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);
我有一个数据存储查询,通过相等过滤不同的道具,在调试查询后,我发现第二个过滤器只适用,第一个不被查询采用。
查询如下:
Query<Entity> query = Query.newEntityQueryBuilder().setKind("locations")
.setFilter(StructuredQuery.PropertyFilter.eq("country",countryCode))
.setFilter(StructuredQuery.PropertyFilter.eq("type",locationTypeCode))
.build();
据我所知,当过滤不同的道具时,它应该可以工作,但在我的情况下不适用?
我最近自己尝试这样做,据我所见,将多个过滤器添加到查询中只是覆盖了过滤器。复合过滤器解决了这个问题。查询文档中有一个部分可能有用: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);