Mongodb需要每天计算特定会员ID

时间:2015-11-15 21:14:57

标签: mongodb mongoose mongodb-query

收藏品名称:活动
我需要的是活动计数
“memberId”= 123
活动“type”='xxx'的地方 每天
在“11/01/2015”和“2015年11月15日”之间//从日期到日期范围
预期产出:
     [
     {日期: “2015年2月22日”,数:10},
     {日期: “2015年2月22日”,数: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}
}})

2 个答案:

答案 0 :(得分:1)

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}}
 ]);

试试

答案 1 :(得分:0)

您可能需要在$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"}