У меня есть несколько экземпляров в Realm: FeedItem
с полем movie
с типом Movie
.Movie
содержит поле showTimes
, то есть List
из ShowTime
объектов.
-FeedItem:
└ movie: Movie
└ showTimes: List<ShowTime>
└ minPrice: Float
И мне нужно запросить все элементы FeedItem
, содержащие Movie
, которые содержат хотя бы один Showtime
с заданным значением для поля minPrice
.
Я мог бы использовать что-то вроде этого:
Realm.getDefaultInstance().where(FeedItem::class.java)
.beginGroup()
.equalTo(FeedItem::movie.name + "." + Movie::showTimes.name + "." + ShowTime::minPrice.name, 10f)
.endGroup()
.findAll()
Но showTimes
- это List
, и мне нужно проверить все элементы.
Из-за существующей архитектуры проекта я не могу запросить все элементы 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.Подскажите, пожалуйста, как мне это сделать?