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

发布于 2024-12-02 07:24:04 字数 582 浏览 2 评论 0原文

目前,我从数据存储中获得 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 数据存储吗?如果是这样,我应该如何创建我的查询?

提前致谢

At the moment I am getting the top scores for my Android application from the datastore as follows:

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

However, I would also like to order the results by the count of a secondary column:

E.g. In normal SQL it would be something like this:

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

Achievements is defined in the datastore as follows

@Persistent
private Set<Integer> achievements;

Is this possible using the GAE datastore? And if so how should I create my query?

Thanks in advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

南巷近海 2024-12-09 07:24:04

您可以使用 addSort 方法到您的 Query 对象,如下所示:

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

You can use the method addSort to your Query object like this:

query.addSort("rating", SortDirection.DESCENDING);
query.addSort("achievements", SortDirection.DESCENDING);
彻夜缠绵 2024-12-09 07:24:04

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

You need to denormalize: store the count as a separate field on your entity, and query on that.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文