【发布时间】:2015-04-17 01:34:33
【问题描述】:
这是我拥有的那种文件:
{
event_type: 'click',
created_at: '2015-02-15 10:00:00',
user_id: 100
}
我需要使用 event_type = click 来汇总每天的唯一用户数。 得到类似的东西:
{
count: 320,
date: '2015-02-15'
}
{
count: 451,
date: '2015-02-16'
}
(注意日期格式)
我已经尝试了很多我在 SO 上找到的不同的东西,这个几乎对我有用: Best way to group by date with Mongoid 我只是不知道如何修改它以完全满足我的需要。
这是几乎可以实现我想用 Mongoid 实现的原始查询:
db.events.aggregate([
{$match: {event_type: 'click', created_at: {
$gte: ISODate('2015-01-01T00:00:00.000Z'),
$lt: ISODate('2016-01-01T00:00:00.000Z')
}}},
{$group: {
_id: {user_id: '$user_id', account_id: '$account_id', created_at: {
day: { $dayOfMonth: '$created_at' },
month: { $month: '$created_at' },
year: { $year: '$created_at'}
}},
'count': {'$sum': 1}
}
},
{$sort: {created_at: -1}},
])
有什么建议吗?
【问题讨论】:
-
你的
created_at日期是ISO日期还是字符串? -
created_at 是 ISO 日期
标签: ruby-on-rails mongodb mongoid