Java 过滤器操作员不在
Java 过滤器操作员不在,java,google-app-engine,google-cloud-datastore,Java,Google App Engine,Google Cloud Datastore,com.google.appengine.api.datastore.Query.FilterOperatorenum中没有not\u值。所有其他操作都是可能的(相等、不相等和所有不等式)。是否可以使用该行为创建FilterPredicate(例如,“id”,notIn(),new int[]{3,4,7},其中notIn()将使查询返回所有值,但在给定列表中找到id的值除外)?如果没有,我怎么能像那样查询数据存储?例如,类似于否定FilterPredicate。就我所知,这种类型的查询没有服务
com.google.appengine.api.datastore.Query.FilterOperator
enum中没有not\u值。所有其他操作都是可能的(相等、不相等和所有不等式)。是否可以使用该行为创建FilterPredicate
(例如,“id”,notIn(),new int[]{3,4,7}
,其中notIn()
将使查询返回所有值,但在给定列表中找到id的值除外)?如果没有,我怎么能像那样查询数据存储?例如,类似于否定FilterPredicate
。就我所知,这种类型的查询没有服务器端支持。在客户端模拟it的最佳方法是合并三个查询的结果:一个用于集合最小值以下的元素,一个用于集合最大值以上的元素,另一个用于在客户端代码中执行而不是的[min..max]
(添加)您可以并行执行所有三个查询以节省时间。如果任何查询返回足够多的实体以耗尽内存或超出时间限制,则会出现问题。我目前正在获取所有数据后执行此操作。但是我需要获取所有可能的值(还有另一个过滤器,客户机,但即使是给定客户机的所有实体),这不是很有效。我也不能在所有的scnarios中使用min..max ideia,因为在某些元素中不是数字。我会用它来表示数字,不过,这是一个我从未想到过的好方法。