我正在尝试计算我的数据库中在某些日期之间创建的实体数量。
我知道谷歌删除了每次查询获取超过1000个结果的限制,但每次我尝试使用远程api时,我只获得1000个结果计数。
有没有人知道如何计算更多1000个实体以检查我有多少实体?
感谢。
Netanel
答案 0 :(得分:3)
最新版本的SDK已删除此限制,因此您可能需要检查并升级。
这仍然不能完全解决你的问题,但是...问题是GAE计数查询是一个非常糟糕的主意 - 因为这不是一个表(它更像是一个分布式数组)每当你做计数它实际上必须击中(并且可能是fetch,我不确定)每个与您的查询匹配的对象。这是一个非常昂贵的操作,所以如果你做了很多,你就会不必要地耗尽资源。如果你有足够的对象,你甚至可能达到30秒的请求限制。
看看其他更具伸缩性的方法,例如地图缩小(计算和存储分钟数,然后是每小时,然后是天,然后是星期,然后是月等)或sharded counter
答案 1 :(得分:1)
Model.gql("WHERE creation_date >= :start_date AND creation_date <= :end_date",
start_date=startdate, end_date=enddate).count()
应返回查询匹配的实体数,即使您的查询数超过1000个。
您至少使用SDK的v1.3.6,因为这是删除了计数限制的地方?