我正在尝试使用group on datetime value对下面的集合进行聚合,
{
"_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个请求。但由于日期中的时间值,它将每个日期视为单个文档。
在这方面的任何帮助都将不胜感激。
编辑:我的查询如下:
db.clrequests.aggregate({ $group : { _id : "$requests.rstTimeStamp", total : {$sum : 1} } })发布于 2015-08-17 17:25:42
为此,您需要使用Date Aggregaetion运算符:
请检查以下查询:
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:
{ "_id" : ISODate("2014-11-12T12:40:13.577Z"), "Total" : 1 }
{ "_id" : ISODate("2014-11-11T10:30:13.577Z"), "Total" : 2 }https://stackoverflow.com/questions/32046221
复制相似问题