我是mongoDB的新手,如图所示,我在MongoDB中有一个简单的文档结构(但是有数百万个具有不同值的文档)。 timestamp
是unix格式,每1分钟生成一次。例如,在5分钟内,集合将包含5个具有不同时间戳的不同文档,
{
a:12,
b:52,
c:15,
timestamp: 15603418700
}
{
a:22,
b:21,
c:14,
timestamp: 15603418760
}
{
a:9,
b:23,
c:32,
timestamp: 15603418820
}
现在,我希望查询每5分钟或说5个文档的a,b和c的平均值。也就是说,我需要输出类似
{
Avg_of_A : [15.3, 16.6, 16.4],
Avg_of_B : [20.3, 21.4, 23.0],
Avg_of_C : [18.9, 17.5, 15.6],
}
在这里,15.3
是前5个文档的a
的平均值,而16.6
是后5个文档的a
的平均值,依此类推...
注意:1.这只是虚拟输出,我只需要以这种格式输出,这样我就可以平均每5分钟打印一次数据(文档)
答案 0 :(得分:1)
您要寻找的被称为“移动平均”。 Moving averages with MongoDB's aggregation framework?在MongoDB中提供了解决方案。
具有Window功能的SQL数据库可以更优雅地做到这一点:https://www.essentialsql.com/sql-puzzle-calculate-moving-averages/