【问题标题】:Querying from GAE datastore using count使用计数从 GAE 数据存储中查询
【发布时间】:2011-08-31 12:43:05
【问题描述】:

目前,我的 Android 应用程序从数据存储中获得了最高分,如下所示:

     Query query = pm.newQuery(PlayerPersistentData.class);
     query.setOrdering("rating desc");
     query.setRange(0, 25);

但是,我还想按次要列的计数对结果进行排序:

例如在普通 SQL 中,它会是这样的:

select PlayerPersistentData.*, count(achievements) as achievements_count
from PlayerPersistentData
order by rating desc, achievements_count desc

成就在数据存储中定义如下

@Persistent
private Set<Integer> achievements;

这可以使用 GAE 数据存储吗?如果是这样,我应该如何创建我的查询?

提前致谢

【问题讨论】:

    标签: android google-app-engine google-cloud-datastore gql


    【解决方案1】:

    您可以像这样对您的 Query 对象使用 addSort 方法:

    query.addSort("rating", SortDirection.DESCENDING);
    query.addSort("achievements", SortDirection.DESCENDING);
    

    【讨论】:

    • 嗨,我可以试一试,但成就实际上是一组。抱歉,我应该将其包含在原文中。 @Persistent private Set 成就;
    • 在这种情况下,我将使用准备好的查询,遍历每个结果并从中获取成绩。见第一个代码块。 code.google.com/appengine/docs/java/datastore/queries.html可能还有更多的方法,但我的知识也有限。
    【解决方案2】:

    您需要进行非规范化:将计数存储为实体上的单独字段,然后对其进行查询。

    【讨论】:

      猜你喜欢
      • 2013-06-21
      • 1970-01-01
      • 2019-06-21
      • 1970-01-01
      • 2018-08-12
      • 1970-01-01
      • 2011-02-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多