使用Mongoid将结果分组并在一个查询中汇总字段?

时间:2011-01-24 22:06:17

标签: ruby-on-rails mongodb mongoid

我正在尝试使用Mongoid执行或多或少的高级查询,它基本上获取日期范围的指标,按天分组,然后汇总每天的值,它还应该告诉我有多少条目用于每一天。

我非常怀疑可以使用Mongoid的活动记录部分来完成,但我不知道如何直接在mongo驱动程序上执行查询。

我的模特:

class Metric
  include Mongoid::Document

  field :id_session,    :type => Integer
  field :metric,        :type => Integer
  field :value,         :type => Integer
  field :date,          :type => Date
  field :time,          :type => Time

  validates_numericality_of :value
  validates_presence_of :id_session, :metric, :value

  before_create :set_date

  def set_date
    self.time   = Time.now
    self.date   = Date.now
  end

end

我已经能够通过使用Metric.distinct(:date)按日期分组结果,但我不知道如何对这些结果进行总结和计数,因为我无法使用该方法结果。

有什么想法吗?我更喜欢留在Mongoid活动记录方法中,但是如果有人知道如何直接在MongoDB驱动程序上执行查询,那也会有所帮助。

谢谢!

1 个答案:

答案 0 :(得分:0)

管理以使其正常工作

    result = Metric.collection.group(
  ['date'] , nil, {:count => 0, :value => 0}, "function(x, y) { y.count++; y.value += x.value }"
)

致谢会在this page

上找到答案