集合名称:活动
我需要的是活动计数
"memberId“= 123
其中活动"type“= 'xxx‘
每天
在"11/01/2015“和"11/15/2015”//从日期到日期之间
预期产出:
[ {date:"2015-02-22",count:10}, {date:"2015-02-22",count:5}, ]我不知道如何在日期之间和特定成员id之间执行聚合。
我所处的地方离解决方案很远:
db.activity.aggregate(
{ $project: {
date: {
years: {$year: '$dateInserted'},
months: {$month: '$dateInserted'},
days: {$dayOfMonth: '$dateInserted'},
},
memberId: '$memberId'
}},
{ $group: {
_id: { memberId: '$memberId', date: '$date' },
number: { $sum: 1}
}})发布于 2015-11-16 04:57:21
db.activity.aggregate([
{$match : { memberId : "xxx",item:"xyz",dateInserted: {$gte: ISODate("2013-01-01T00:00:00.0Z"), $lt: ISODate("2016-02-01T00:00:00.0Z")}}},
{$project: {day: {day: {$dayOfMonth: '$dateInserted'}, month: {$month: '$dateInserted'}, year: {$year: '$dateInserted'}}}},
{$group: { _id: { day: '$day' }, count: { $sum: 1} }},{ $sort:{_id:1}}
]);试试看
发布于 2015-11-15 21:28:05
您可能需要在$match之前添加$project阶段
$match:
{dateInserted:{{$gte:new Date("2015-01-11T00:00:00 -02:00"),{$lte:new Date("2015-01-15T23:59:59 -02:00")}}},
{memberId:123},
{type:"xxx"} https://stackoverflow.com/questions/33725131
复制相似问题