【发布时间】:2012-08-17 22:29:23
【问题描述】:
我有一个 mongo 表,其中包含如下统计数据......
- course_id
- 状态
which is a string, played or completed - 和时间戳信息使用Mongoid's Timestamping feature
所以我的班级如下...
class Statistic
include Mongoid::Document
include Mongoid::Timestamps
include Mongoid::Paranoia
field :course_id, type: Integer
field :status, type: String # currently this is either play or complete
我想获得一门课程的每日总播放次数。所以例如... 2012 年 8 月 1 日有 2 场,2012 年 8 月 2 日有 6 场。等等。因此,我将使用 created_at 时间戳字段,以及 course_id 和 action。问题是我在 Mongoid 中没有看到按方法分组。我相信 mongodb 现在有一个,但我不确定如何在 rails 3 中完成。
我可以使用每一个来遍历表,并在 Rails 中添加一些地图或哈希并增加增量,但如果课程有 100 万个视图,那么检索和迭代超过 100 万条记录可能会很麻烦。有没有干净的方法来做到这一点?
【问题讨论】:
-
大约有 3 件错误/可疑之处:1) 你为什么使用 mongo 来做这个?不要说“因为它很酷”; 2) mongo 中的分组通常是通过 map/reduce 完成的,而不是像在 RDBMS 支持的应用程序中那样通过调用完成; 3) 该课程现在有 100 万次观看吗?如果没有,并且在 ruby 中聚合很简单,那就去做吧。如果/何时出现规模,请担心规模。
-
如果你可以使用2.2那么你可以使用聚合框架。
标签: ruby-on-rails ruby-on-rails-3 mongodb mongoid ruby-on-rails-3.2