我在我的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());
答案 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();