FilterOperator NOT IN

时间:2015-05-20 14:45:07

标签: java google-app-engine google-cloud-datastore

com.google.appengine.api.datastore.Query.FilterOperator枚举没有NOT_IN值。所有其他操作都是可能的(相等,不相等和所有不等式)。是否可以使用该行为创建FilterPredicate(例如,"id", notIn(), new int[] { 3, 4, 7 },其中notIn()将使查询返回除了在给定列表中找到id的那些值之外的所有值?如果没有,他们如何查询数据存储?例如,否定FilterPredicate之类的东西。

1 个答案:

答案 0 :(得分:1)

对于该类型的查询,没有(据我所知)服务器端支持。模拟客户端的最佳选择是合并三个查询的结果:一个用于低于集合最小值的元素,一个用于高于集合最大值的元素,一个用于[min..max]你在哪里在客户端代码中执行select r.*, (case when filmname = 'Gladiator' and row_number() over (partition by filmname order by date) = 1 then 1 else 0 end) as IsWatchedFirst from results r;

(已添加)您可以并行执行所有三个查询以节省时间。如果任何查询返回足够多的实体来破坏内存或超过时间限制,则会出现挑战。