领域递归查询 - android
Realm recursive query - android
我在 Realm 中有几个实例:FeedItem
具有类型为 Movie
的字段 movie
。 Movie
包含字段 showTimes
,即 ShowTime
个对象的 List
。
-FeedItem:
└ movie: Movie
└ showTimes: List<ShowTime>
└ minPrice: Float
而且我需要查询所有包含 Movie
的 FeedItem
项,其中至少包含一个 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 编写一个复杂的查询。请告诉我,我该怎么做?
我找到了解决方案:
因此,就我而言:
Realm.getDefaultInstance().where(FeedItem::class.java).beginGroup()
.greaterThanOrEqualTo(FeedItem::movie.name
+ "."
+ Movie::showTimes.name
+ "."
+ ShowTime::minPrice.name,
10f)
.endGroup()
我在 Realm 中有几个实例:FeedItem
具有类型为 Movie
的字段 movie
。 Movie
包含字段 showTimes
,即 ShowTime
个对象的 List
。
-FeedItem:
└ movie: Movie
└ showTimes: List<ShowTime>
└ minPrice: Float
而且我需要查询所有包含 Movie
的 FeedItem
项,其中至少包含一个 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 编写一个复杂的查询。请告诉我,我该怎么做?
我找到了解决方案:
因此,就我而言:
Realm.getDefaultInstance().where(FeedItem::class.java).beginGroup()
.greaterThanOrEqualTo(FeedItem::movie.name
+ "."
+ Movie::showTimes.name
+ "."
+ ShowTime::minPrice.name,
10f)
.endGroup()