0

有没有办法在 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)
4

1 回答 1

1

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

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

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

Activity.aggregate([group,match])
于 2013-05-12T21:43:58.797 回答