我想做以下事情:
PreparedQuery pq = datastore.prepare(q);
int count = pq.countEntities(FetchOptions.ALL);
但是没有 ALL 选项。那我该怎么做呢?
对于上下文,我想要计算我的表中颜色为橙色的所有条目。
如果我不能直接使用DatastoreService
执行此操作,我可以使用 Datanucleus的JPA 吗?他们支持SELECT COUNT(*) ...
用于appengine数据存储区吗?
答案 0 :(得分:5)
您可以使用以下代码计算记录总数。
com.google.appengine.api.datastore.Query qry = new com.google.appengine.api.datastore.Query("EntityName");
com.google.appengine.api.datastore.DatastoreService datastoreService = DatastoreServiceFactory.getDatastoreService();
int totalCount = datastoreService.prepare(qry).countEntities(FetchOptions.Builder.withDefaults());
我希望它会对你有所帮助。
答案 1 :(得分:2)
标记的答案不正确,最大值为1000
这就是人们获得正确计数的方式
DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
Query query = new Query("__Stat_Kind__");
Query.Filter eqf = new Query.FilterPredicate("kind_name",
Query.FilterOperator.EQUAL,
"MY_ENTITY_KIND");
query.setFilter(eqf);
Entity entityStat = ds.prepare(query).asSingleEntity();
Long totalEntities = (Long) entityStat.getProperty("count");
答案 2 :(得分:1)
你可以使用谷歌的DataNucleus插件,似乎show support for count()
答案 3 :(得分:1)
这个旧的但应该有助于寻求出路的新开发者。
最好的方法是使用分片计数器技术,因为你保存在你知道会随时间扩展的实体上,使用分片计数器来获取插入记录的总数或实体组的更新新记录,通过这个,您可以获得计数器的总数及其相应的计数,这些计数将总计得出数据存储表或种类中总元素的实际计数。
使用此链接获取有关如何进行操作的帮助,以便更好地了解观看Google i / o 2008有关扩展网络应用程序here的信息,然后转到有关appengine here的此文档,所以你很快掌握了它,并且还有一个github示例测试。
对于添加的示例,请使用此链接Blog Tutorial,它解释了一个简单的示例。