2

我想做以下事情:

PreparedQuery pq = datastore.prepare(q);
int count = pq.countEntities(FetchOptions.ALL);

但是没有ALL选项。那么我该怎么做呢?

对于上下文,假设我想计算表格中颜色为橙色的所有条目。

如果我不能直接使用DatastoreService,我可以使用Datanucleus 的 JPA吗?他们是否支持SELECT COUNT(*) ...appengine 数据存储?

4

4 回答 4

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());

我希望它会帮助你。

于 2013-06-01T10:57:26.183 回答
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");
于 2016-03-23T15:49:27.480 回答
1

您可以使用 Google 的 DataNucleus 插件,它似乎显示了对 count() 的支持

于 2013-05-31T18:16:10.050 回答
1

这个旧的但应该对寻求出路的新开发人员有所帮助。

解决此问题的最佳方法是使用分片计数器技术,当您保存您知道会随时间扩展的实体时,使用分片计数器获取插入的记录总数或实体组由新记录更新,有了这个,您可以获得计数器的总数及其相应的计数,这些计数将相加得出数据存储表或种类中总元素的实际计数。

使用此链接获取有关如何进行操作的帮助,以便更好地了解在此处观看关于扩展 Web 应用程序的 google i/o 2008 ,之后您可以在此处移至 appengine 上的此文档,以便您快速掌握它,并且也有一个 github 示例测试。

要添加示例,请使用此链接博客教程,其中解释了一个简单的示例。

于 2016-11-03T11:10:49.560 回答