从Realm DB中获取单个项目,其中项目是具有最新时间戳的项目

时间:2016-07-12 12:05:39

标签: android realm

我在我的Android应用中使用Realm DB,我想只获取一个具有最新时间戳的项目。我无法实现它,因为我不知道该怎么做。但是,这就是我正在做的事情

TopicModel topicModel = realm.where(TopicModel.class).equalTo("rootMessageId", getRootMessageId()).findFirst();
            List<MessageModel> messageModel = realm.where(MessageModel.class)
                    .equalTo("theMainTopidId", topicModel.getRadomUdid())
                    .findAllSorted("updatedTime", Sort.DESCENDING);
            Log.e(TAG, "Recent Message: " + messageModel.get(messageModel.size() - 1).getUpdatedTime());

1 个答案:

答案 0 :(得分:3)

我认为你不能得到与你描述的mongodb完全相同的实现。排序结果是您在查询结束时或之后执行的操作。

但是,例如,调用findAll后得到的RealmResults是非常低内存消耗的引用列表。从查询中获得的结果不是复制对象,它们只是引用。另请参阅RealmResults的类说明:

  

此类包含给定Realm的RealmQuery的所有匹配项。对象不会从Realm复制到RealmResults列表,而只是从RealmResult引用。这样可以节省内存并提高速度。

所以它应该不重要。如果你只是想找到最新的消息,你可以改为使用单行代码:

MessageModel mm = realm.where(MessageModel.class)
                       .equalTo("theMainTopidId", topicModel.getRadomUdid())
                       .findAllSorted("updatedTime", Sort.DESCENDING)
                       .where()
                       .findFirst();