のテーブルがありcreations
ます。それぞれがカテゴリに属しています ( 付きcategoryId
)。と呼ばれるフィールドもありますstatFavorites
。
リスト内の各カテゴリのお気に入りが最も多い単一の作品のフラットリストを返したいと思います。
私が考えることができる唯一の方法は、を使用することですgroupedMapReduce
。別の方法はありますか?
var categories; // objects with an id
r.table('creations')
.filter(function(creation) {
return categories.filter(function(category) {
return category.id == creation.categoryId
}).length > 0
})
.groupedMapReduce(function(row) {
return row("categoryId")
}
, function(row) { return row }
, function(best, creation) {
return r.branch(creation("statFavorites").gt(best("statFavorites")), creation, best
})
上で起こっている 2 つのこと: まず、関心のあるカテゴリのみに一致するように作品をフィルタリングしていin
ます (mongo でのクエリに相当します。これを再考するにはどうすればよいでしょうか?)
第二に、私はそれぞれの中で最もお気に入りを得ています。
これを行うより良い方法はありますか?データを書き込んでいるときに事前に計算しても問題ない場合があります。