有没有办法过滤Mongoid中map-reduce操作的结果?我找到了一个可以在MongoDB上执行的'查询'函数,但是在Mongoid中似乎没有映射。
我想获得价值大于10的所有用户的活动计数:
Activity.map_reduce(%{
emit(this.user_id, 1);
}, %{
function(key, values) {
return Array.sum(values);
}
}).out(inline: true).query(:'value.gt' => 10)
答案 0 :(得分:1)
Mongoid支持聚合框架(从3.x开始),这使得这很简单:
group = { "$group" =>
{ "_id" => "$user_id", "count" => { "$sum" => 1 } }
}
match = {"$match" =>
{ "count" => { "$gt" => 10} }
}
Activity.aggregate([group,match])