使用计数从GAE数据存储区查询

时间:2011-08-31 12:43:05

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

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

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

但是,我还想通过辅助列的计数来订购结果:

E.g。在普通的SQL中,它将是这样的:

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

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

@Persistent
private Set<Integer> achievements;

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

提前致谢

2 个答案:

答案 0 :(得分:3)

您可以将方法addSort用于Query对象,如下所示:

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

答案 1 :(得分:1)

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