首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mongodb需要每天计算特定的成员id。

Mongodb需要每天计算特定的成员id。
EN

Stack Overflow用户
提问于 2015-11-15 21:14:56
回答 2查看 307关注 0票数 0

集合名称:活动

我需要的是活动计数

"memberId“= 123

其中活动"type“= 'xxx‘

每天

在"11/01/2015“和"11/15/2015”//从日期到日期之间

预期产出:

代码语言:javascript
复制
  [
代码语言:javascript
复制
    {date:"2015-02-22",count:10},
代码语言:javascript
复制
    {date:"2015-02-22",count:5},
代码语言:javascript
复制
 ]

我不知道如何在日期之间和特定成员id之间执行聚合。

我所处的地方离解决方案很远:

代码语言:javascript
复制
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}
}})
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-16 04:57:21

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2015-11-15 21:28:05

您可能需要在$match之前添加$project阶段

代码语言:javascript
复制
    $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"} 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33725131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档