You can do something like this:
The equivalent of in
is contains
http://www.rethinkdb.com/api/javascript/contains/
categories = [id1, id2, id3]
r.table('creations')
.filter(function(creation) {
return r.expr(categories).contains(creation("id"))
})
.groupedMapReduce(function(row) {
return row("categoryId")
}
, function(row) { return row }
, function(best, creation) {
return r.branch(creation("statFavorites").gt(best("statFavorites")), creation, best
})
If categories is an object like
{
id1: true,
id2: true
}
You can also use hasFields
instead of contains
http://www.rethinkdb.com/api/javascript/has_fields/
r.table('creations')
.filter(function(creation) {
return r.expr(categories).hasFields(creation("id"))
})
.groupedMapReduce(function(row) {
return row("categoryId")
}
, function(row) { return row }
, function(best, creation) {
return r.branch(creation("statFavorites").gt(best("statFavorites")), creation, best
})