IN
运行查询时,新的柔性环境数据存储接口似乎不支持操作。我希望我是错的,如果是这样,如何IN
在 Datastore 的新 Java 界面中使用运算符?
1348 次
2 回答
2
WHERE color IN('RED', 'BLACK')
Datastore(服务器端)不支持类似 - 的查询。OR
运算符(例如)也是如此WHERE color='RED' OR color='BLACK'
。一些客户端 API 通过将查询拆分为多个然后合并每个查询的结果来添加此功能。新的google-cloud-java API 尚不支持此功能。现在,您必须为IN
子句中的每个值运行多个查询并合并结果。
于 2017-08-23T13:12:11.840 回答
0
这是文档中的一个示例:
如果要对查询设置多个过滤器,则必须使用
CompositeFilter
,这需要至少两个过滤器。
Filter tooShortFilter = new FilterPredicate("height", FilterOperator.LESS_THAN, minHeight);
Filter tooTallFilter = new FilterPredicate("height", FilterOperator.GREATER_THAN, maxHeight);
Filter heightOutOfRangeFilter = CompositeFilterOperator.or(tooShortFilter, tooTallFilter);
Query q = new Query("Person").setFilter(heightOutOfRangeFilter);
您也可以使用.and()
. 此处的代码适用于 Java 7。对于 Java 8,您可以在上面引用的文档中找到相应的代码。我希望这会有所帮助。
现在到IN
. 虽然我最近自己没有尝试过,但当前的文档表明它仍然可以用作运算符。根据它,类似下面的代码应该可以工作:
Filter propertyFilter = new FilterPredicate("height", FilterOperator.IN, minHeights);
Query q = new Query("Person").setFilter(propertyFilter);
或者,您可以使用Google GQL。它将允许您编写类似 SQL 的语法,您可以在其中使用in(...)
.
于 2017-08-29T14:46:20.507 回答