过滤器IN
限制为 30 个项目。是否有可能超越该限制?或者是否有可行/推荐的解决方法?
问问题
362 次
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 回答