使用map/reduce为mongo_mapper增加sum方法

mongodb的map/reduce是个十分强大的功能,mongo_mapper虽然已经接近于1.0,但还是少一些比较有用的功能,比如对一个字段求和,取最大,最小值等,不过你可以很容易的通过mongodb的map/reduce为mongo_mapper扩展这些功能,甚至是更复杂的,下面以sum为例:


class Model
  def self.sum(field)
    m = "function () {emit('sum', this.#{field.to_s})}"
    r = "function(k, vals) { var sum = 0; for(var i in vals){sum += vals[i];}; return sum;}"
    res = self.collection.map_reduce(m, r)
    return res.find().next_document['value'].to_i
  end
end

This entry was posted in 其它. Bookmark the permalink. Post a comment or leave a trackback: Trackback URL.

无觅相关文章插件,快速提升流量