MongoDB聚合框架能否将$group合并出来?

MongoDB聚合框架能否将$group合并出来?,mongodb,mongodb-query,aggregation-framework,Mongodb,Mongodb Query,Aggregation Framework,这是我的查询,我想将$\u id合并到YYYY-MM-DD?或者使用Mysql DATE()之类的函数将日期时间格式转换为日期格式 db.event.aggregate([ { $project: { "created": {$add: ["$created", 60*60*1000*8]}, } }, { $group: { "_id": { "year": {"$year": "$created"},

这是我的查询,我想将$\u id合并到YYYY-MM-DD?或者使用Mysql DATE()之类的函数将日期时间格式转换为日期格式

db.event.aggregate([
{
    $project: {
        "created": {$add: ["$created", 60*60*1000*8]},
    }
},    
{
    $group: {
        "_id": {
            "year": {"$year": "$created"},
            "month": {"$month": "$created"},
            "day": {"$dayOfMonth": "$created"}
        },
        "count": { $sum: 1 }
    }
}

])

您基本上已经在使用日期聚合操作符将组件拆分为复合的
\u id
键,这可能是处理它的最佳方法。实际上,您可以通过运算符和使用以下命令来更改此设置:

db.event.aggregate([
{“$project”:{
“已创建”:{$add:[“$created”,60*60*1000*8]},
}},    
{“$组”:{
“_id”:{
“年”:{“$year”:“$created”},
“月”:{“$month”:“$created”},
“日”:{“$dayOfMonth”:“$created”}
},
“计数”:{“$sum”:1}
}},
{“$project”:{
“_id”:{“$concat”:[
{“$substr”:[“$\u id.year”,0,4]},
"-",
{“$cond”:[
{“$lte”:[“$\u id.month”,9]},
{“$concat”:[
"0", 
{“$substr”:[“$\u id.month”,0,2]}
]},
{“$substr”:[“$\u id.month”,0,2]}
]},
"-",
{“$cond”:[
{“$lte”:[“$\u id.day”,9]},
{“$concat”:[
"0",
{“$substr”:[“$\u id.day”,0,2]}
]},
{“$substr”:[“$\u id.day”,0,2]}
]}
]},
“计数”:1
}}
])
因此,有一点强制将日期部分的值转换为字符串,以及用前导0填充两个didGit下的任何值,就像“YYYY-MM-DD”格式一样

注意,这是可以做到的,并且已经能够做到一段时间了,但操作员手册页面描述中明显缺少这一点


一开始就不确定你的“约会数学”。我想说,您最好使用聚合运算符,然后处理您想要调整的值,或者如果确实是“时区”校正,那么您可能会更好地处理客户端。

真的很酷,我不知道是否能够将两个$project放在一起。