如何在Mongoid中过滤map-reduce的结果

时间:2013-05-11 00:54:52

标签: mongodb mongoid

有没有办法过滤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)

1 个答案:

答案 0 :(得分:1)

Mongoid支持聚合框架(从3.x开始),这使得这很简单:

group =  { "$group" =>
             { "_id" => "$user_id", "count" => { "$sum" => 1 } } 
}

match = {"$match" => 
           { "count"    => { "$gt" => 10} }
}

Activity.aggregate([group,match])