首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在datetime上聚合

在datetime上聚合
EN

Stack Overflow用户
提问于 2015-08-17 16:50:45
回答 1查看 1.6K关注 0票数 0

我正在尝试使用group on datetime value对下面的集合进行聚合,

代码语言:javascript
复制
{
    "_id" : 104801,
    "requests" : {
        "rstTimeStamp" : ISODate("2014-11-11T10:30:13.577Z"),
        "emailId" : "user1@example.com"
    }
}
{
    "_id" : 104802,
    "requests" : {
        "rstTimeStamp" : ISODate("2014-11-11T12:40:13.577Z"),
        "emailId" : "user2@example.com"
    }
}
{
    "_id" : 104803,
    "requests" : {
        "rstTimeStamp" : ISODate("2014-11-12T12:40:13.577Z"),
        "emailId" : "user3@example.com"
    }
}

并且期望输出显示特定日期的请求总数,例如,日期2014-11-11具有2个请求。但由于日期中的时间值,它将每个日期视为单个文档。

在这方面的任何帮助都将不胜感激。

编辑:我的查询如下:

代码语言:javascript
复制
db.clrequests.aggregate({ $group : { _id : "$requests.rstTimeStamp", total : {$sum : 1} } })
EN

回答 1

Stack Overflow用户

发布于 2015-08-17 17:25:42

为此,您需要使用Date Aggregaetion运算符:

请检查以下查询:

代码语言:javascript
复制
db.exp8.aggregate([ 
                    { $group : 
                      { _id: 
                        { year : {$year:"$requests.rstTimeStamp"},
                          month: {$month:"$requests.rstTimeStamp"},
                          day :  {$dayOfMonth:"$requests.rstTimeStamp"}
                        },
                        Total : { $sum : 1 } , 
                        dte : {$first:"$requests.rstTimeStamp"} 
                       }
                     },
                     { $project : { _id : "$dte" , Total : 1 } } 
                   ]);

OutPut:

代码语言:javascript
复制
{ "_id" : ISODate("2014-11-12T12:40:13.577Z"), "Total" : 1 }
{ "_id" : ISODate("2014-11-11T10:30:13.577Z"), "Total" : 2 }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32046221

复制
相关文章

相似问题

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