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 的支持,因此您必须手动解析系列,但我们正在考虑将来允许这样做的方法。
此刻我从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 的支持,因此您必须手动解析系列,但我们正在考虑将来允许这样做的方法。