【发布时间】:2015-12-04 20:51:12
【问题描述】:
我有一个带有“创建”日期字段的用户表。现在我想知道上周每天创建了多少新用户,以及每天结束时(从一开始)的用户总数。
例如:
{
{
day: 27,
new_users: 5,
total_users: 100
}, {
day: 28,
new_users: 7,
total_users: 107
}, {
day: 29,
new_users: 2,
total_users: 109
}
}
我已经通过简单的分组和求和得到了 new_users 部分。下面的代码是 mongoid/Ruby。
results = User.collection.aggregate(
[{
"$match" => {
created: { "$gte" => 1.week.ago.beginning_of_day, "$lte" => Time.now }
}
},
{
"$group" => {
_id: {
year_joined: { "$year" => "$created" },
month_joined: { "$month" => "$created" },
day_joined: { "$dayOfMonth" => "$created" }
},
count: { "$sum" => 1 }
}
},
{
"$sort" => {"_id.year_joined" => 1, "_id.month_joined" => 1, "_id.day_joined" => 1}
}]
)
如何在结果中也获得 total_users?
【问题讨论】:
-
(1) 你能告诉我们你尝试了什么吗?我们不想为您编写所有代码。 (2) 当您说总用户数时,您是指从某个时间开始或从上周开始的总用户数?
-
@DavidGrinberg 从一开始。我已经编辑了我的问题以包含代码。
标签: ruby-on-rails mongodb mongoid aggregation-framework