在我的GAE申请表中,我有一项调查。例如,一个问题是“你住在哪里?”。 如果我们使用谷歌留言板示例应用程序,密钥将是留言簿,并在此我创建了较小的键,如地址,内容2,内容3。我发布或检索个别结果没有问题,例如:“Fred MALE 24 Tokyo”“content1,gender,age,place”。但是,在另一页上,我想显示参加调查的人数; 10人回答了调查问题 - 3名男性7名女性。我还想展示一些结果,例如“10人回答了东京的调查”。有人可以通过数据存储区解释一种计算方式吗?如果您的回答是在Google的留言板示例或GAE的另一个简单示例中,那么它也会有所帮助。お愿いします!
答案 0 :(得分:2)
有计数,请参阅https://developers.google.com/appengine/docs/python/datastore/queryclass#Query_count 但是请看那里的笔记。简而言之:
其时间与计算的元素数量成正比
如果你有很多元素,它会因为(1)而超时,所以你需要使用限制一个paginate客户端。
它比迭代更快,但是通过一个常数因子(因为#1)
对于许多元素,您的方向是使用mapreduce之类的东西,使用cloud sql(最简单但是$)或自己维护计数,通常使用分片和/或使用memcached来提高性能并大大降低同时操作的可能性丢失数据(因为memcached支持原子加法操作)
答案 1 :(得分:1)
你的意思是像 -
这样的查询从性别='M'的问卷中选择计数(*)
我不认为您可以从GAE数据存储中返回
选项是 -
从查询中返回一个列表并输出其大小
@SuppressWarnings("unchecked")
public List<Users> Users() {
PersistenceManager pm = getPersistenceManagerFactory().getPersistenceManager();
String query = "select from " + User.class.getName();
return (List<User>) pm.newQuery(query).execute();
}
维护数据存储区中这些字段的计数