我想做以下事情:
PreparedQuery pq = datastore.prepare(q);
int count = pq.countEntities(FetchOptions.ALL);
但是没有ALL选项。那么我该怎么做呢?
对于上下文,假设我想计算表格中颜色为橙色的所有条目。
如果我不能直接使用DatastoreService
,我可以使用Datanucleus 的 JPA吗?他们是否支持SELECT COUNT(*) ...
appengine 数据存储?
我想做以下事情:
PreparedQuery pq = datastore.prepare(q);
int count = pq.countEntities(FetchOptions.ALL);
但是没有ALL选项。那么我该怎么做呢?
对于上下文,假设我想计算表格中颜色为橙色的所有条目。
如果我不能直接使用DatastoreService
,我可以使用Datanucleus 的 JPA吗?他们是否支持SELECT COUNT(*) ...
appengine 数据存储?
您可以使用以下代码计算总记录数。
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());
我希望它会帮助你。
标记的答案不正确,最多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");
您可以使用 Google 的 DataNucleus 插件,它似乎显示了对 count() 的支持
这个旧的但应该对寻求出路的新开发人员有所帮助。
解决此问题的最佳方法是使用分片计数器技术,当您保存您知道会随时间扩展的实体时,使用分片计数器获取插入的记录总数或实体组由新记录更新,有了这个,您可以获得计数器的总数及其相应的计数,这些计数将相加得出数据存储表或种类中总元素的实际计数。
使用此链接获取有关如何进行操作的帮助,以便更好地了解在此处观看关于扩展 Web 应用程序的 google i/o 2008 ,之后您可以在此处移至 appengine 上的此文档,以便您快速掌握它,并且也有一个 github 示例测试。
要添加示例,请使用此链接博客教程,其中解释了一个简单的示例。