领域递归查询 - android

Realm recursive query - android

我在 Realm 中有几个实例:FeedItem 具有类型为 Movie 的字段 movieMovie 包含字段 showTimes,即 ShowTime 个对象的 List

-FeedItem:
  └ movie: Movie
      └ showTimes: List<ShowTime>
                           └ minPrice: Float

而且我需要查询所有包含 MovieFeedItem 项,其中至少包含一个 Showtime 具有给定值的 minPrice 字段。

我可以使用这样的东西:

Realm.getDefaultInstance().where(FeedItem::class.java)
                                    .beginGroup()
                                    .equalTo(FeedItem::movie.name + "." + Movie::showTimes.name + "." + ShowTime::minPrice.name, 10f)
                                    .endGroup()
                                    .findAll()

但是 showTimesList,我需要检查所有项目。

由于项目的现有架构,我无法查询所有项目 FeedItem 然后过滤它们。所以我不能使用像这样的简单解决方案:

val feed = Realm.getDefaultInstance().where(FeedItem::class.java).findAll()

val filteredFeed = feed.filter { feedItem ->
    var b = false
    feedItem.movie.showTimes.forEach { showtime ->
        b = showtime.minPrice == 10f
    }
    b
}

解决我的问题的唯一方法是向 Realm 编写一个复杂的查询。请告诉我,我该怎么做?

我找到了解决方案:

因此,就我而言:

Realm.getDefaultInstance().where(FeedItem::class.java).beginGroup()
          .greaterThanOrEqualTo(FeedItem::movie.name
                        + "."
                        + Movie::showTimes.name
                        + "."
                        + ShowTime::minPrice.name,
                        10f)
           .endGroup()