Mongodb 查询最近24小时内的所有文档createdate,并按小时分组?
通过阅读各种文章,我相信这应该是可能的,但我不确定从哪里开始 这就是我想做的:Mongodb 查询最近24小时内的所有文档createdate,并按小时分组?,mongodb,mongoose,aggregation-framework,Mongodb,Mongoose,Aggregation Framework,通过阅读各种文章,我相信这应该是可能的,但我不确定从哪里开始 这就是我想做的: 我想运行一个查询,它会查找过去24小时内的所有文档createdate,并按小时对所有文档进行分组,因为每个小时文档都有一个平均值“PM10”和过去24小时的最大值PM10,最近24小时平均PM10值。我想运行一个查询Iam获取每小时平均PM10值Reming如何计算每小时平均PM10值和总PM10值,总PM10最大值请任何人建议我 Here's a sample of the collection: {
我想运行一个查询,它会查找过去24小时内的所有文档createdate,并按小时对所有文档进行分组,因为每个小时文档都有一个平均值“PM10”和过去24小时的最大值PM10,最近24小时平均PM10值。我想运行一个查询Iam获取每小时平均PM10值Reming如何计算每小时平均PM10值和总PM10值,总PM10最大值请任何人建议我
Here's a sample of the collection:
{
"_id" : ObjectId("5ad768309ee4f03480792b20"),
"CREATEDATE" : ISODate("2018-04-25T15:45:52.779Z"),
"PM10" : 176.024749755859,
"PM2DOT5" : 60.0020217895508,
}
{
"_id" : ObjectId("5ad768309ee4f03480792b30"),
"CREATEDATE" : ISODate("2018-04-25T16:45:52.779Z"),
"PM10" : 176.024749755859,
"PM2DOT5" : 60.0020217895508,
}
And the aggregation query:
db.collection1.aggregate(
{$match: {
CREATEDATE: {$gt: new Date(new Date(ISODate().getTime() - 1000*60*60*24))}
}},
{$project: { "h":{"$hour":"$CREATEDATE"}, "PM10":1 }},
{$group:{
"_id":"$h",
"Max_PM10": {"$max":"$PM10"},
"PM10": {$avg:"$PM10"}
}}
])
Expected output:
{
"Hour":15,
"AVG_PM10_VALUE":154.64,
}
{
"Hour":16,
"AVG_PM10_VALUE":157.64,
}
"TOTAL_PM10_MAX_VALUE":157.89,
"TOTAL_PM10_AVG_VALUE":156.14
那么问题是什么呢?你告诉我们你想要什么,你告诉我们你写了什么,现在告诉我们到底出了什么问题。我想运行一个查询,我只得到每小时PM10值。删除“LAST_24HOURS_PM10_MAX_value”:177.89,“LAST_24HOURS_PM10_AVG_value”当前位置144.67找不到请建议我以前曾试图向您解释,我们不理解您的要求,因为您实际上没有提出任何要求。
“过去24小时PM10平均值”是什么意思?
什么是“过去24小时平均值”?怎么会出现“按小时分组”?您是否希望返回的每个小时的值都相同?我们只是不知道。如何计算每个小时的平均PM10值以及所有文档的平均PM10值和最大PM10值您不能有““所有文档中的合计”作为“每个文档”中的值。分组的工作方式不是这样的。如果希望它在最终结果中以这种方式显示,请运行另一个查询以获得“合计平均值”“然后更改从该文件中获得的每个文件,使其包含该编号。无法在单个聚合管道中完成。无论如何,这不是一种可伸缩的方式。改为运行两个查询。