Realm 获取 10 个在其组中具有最大值的对象

Realm fetch 10 object which has the max value in their group

此刻我从ORMLite数据库迁移到Realm数据库。
我能够毫无问题地翻译大部分查询,但在这种情况下,我不知道它应该是什么样子。有什么建议吗?

我得到了带有以下字段的 Realm 对象:

EpisodeId as Integer
serieId as Integer
„watchedDate” as Date

现在我想查询最近10个观看的serieId。 在SQL中应该会喜欢(语义可能有误):

  Select *, max(watched_date) as 'maxdate' from watched_entity group by serieId  order by 'maxdate' LIMIT 10

Realm 目前不支持 LIMIT,这是有充分理由的,因为 RealmResults 不是 数据的副本,这意味着没有很大的内存携带此类参考资料的处罚。只需遍历您的 RealmResults 并手动选择前 10 个元素。

关于您的模型的另一条说明。请记住,Realm 不是关系数据库,而是使用链接来指定对象之间的关系。 Realm 中更合理的方法类似于(伪代码):

class Serie extends RealmObject
 - String name
 - etc...

class Episode extends RealmObject
 - Serie serie
 - boolean watched
 - Date lastWatched
 - etc...

这使得查询更容易编写。

此外,关于您的具体查询,我们目前仍然缺乏对 GROUPBY 的支持,因此您必须手动解析系列,但我们正在考虑将来允许这样做的方法。