1

过滤器IN限制为 30 个项目。是否有可能超越该限制?或者是否有可行/推荐的解决方法?

4

2 回答 2

4

无法覆盖该限制。这就是为什么。

当您对 进行IN查询时where x in [n1, n2, n3],实际发生的是 3 个单独的查询被提交到数据存储区:

where x = n1
where x = n2
where x = n3

然后将生成的键列表合并在一起,删除重复项,为您提供最终结果。

由于in列表中的每个项目都会创建一个单独的实际数据存储区查询,并且每个 GQL 查询限制为 30 个实际数据存储区查询,因此列表中的项目数限制为 30 个。

于 2012-09-25T09:07:46.903 回答
0

如上所述,您只能在一个查询中获得 30 个项目,因为该查询是在 30 个并行的不同查询中解释的。一种解决方法是发出 30 个项目的串行请求,如下例所示

offset = 0
item_count = len(keys)
result = []
while offset < item_count:
   data = Entity.all().filter('key IN', keys[offset:30])
   result.extend(data)
   offset += 30 
return result
于 2012-09-28T17:23:01.583 回答