【发布时间】:2017-04-21 01:32:17
【问题描述】:
我正在使用 nodejs 和 mongodb 作为数据库
我的文件是:
{
"_id": "58466d6a0b3f4d2e2fa22905",
"updatedAt": "2016-12-06T07:48:58.435Z",
"createdAt": "2017-12-06T07:48:58.435Z",
"userId": "56d04e265a2100c72a311334",
"__v": 0
}
用户将在客户端给出fromDate,toDate和频率,其中频率值可以是0,1,2 其中 0 表示日,1 表示周,2 表示年。
根据以上数据我想生成报告
例如:如果用户给出 fromDate=2016-12-1 和 toDate=2016-12-6。
如果频率为 0,结果将是
{
2016-12-01:{
count:1
}
2016-12-02:{
count:7
}
2016-12-06:{
count:8
}
}
如果频率为 1,结果将是
{
2016-12-01 to 2016-12-06:{
count:16
}
}
如果频率为 2,结果将是
{
2016:{
count:16
}
}
其中count是文档数
我是这样做的:
var aggregate = [{
$match: {
createdAt: {
$gte: fromDate,
$lt: toDate
}
}
}, {
$group: {
// what should i will do here
},
count: {
$sum: 1
}
}
}]
return LoginReportModel.aggregate(aggregate).exec();
或者任何人知道其他更好的方法,比如使用 lodash 也欢迎
已编辑:我还希望 userId 上的文档计数是唯一的
【问题讨论】:
标签: node.js mongodb mongoose aggregation-framework