如何查询每五个文档的字段平均值?
How to query average of fields for each five documents?
我是 mongoDB 的新手,我在 MongoDB 中有一个简单的文档结构,如图所示(但有数百万个具有不同值的文档)。这里 timestamp
是 unix 格式,每 1 个 minutes.for 示例生成一次,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分钟打印一次数据(文档)
您要找的是"Moving Average"。 Moving averages with MongoDB's aggregation framework? 在 MongoDB 中提供了解决方案。
SQL 具有 Window 功能的数据库可以以更优雅的方式做到这一点:https://www.essentialsql.com/sql-puzzle-calculate-moving-averages/
我是 mongoDB 的新手,我在 MongoDB 中有一个简单的文档结构,如图所示(但有数百万个具有不同值的文档)。这里 timestamp
是 unix 格式,每 1 个 minutes.for 示例生成一次,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分钟打印一次数据(文档)
您要找的是"Moving Average"。 Moving averages with MongoDB's aggregation framework? 在 MongoDB 中提供了解决方案。
SQL 具有 Window 功能的数据库可以以更优雅的方式做到这一点:https://www.essentialsql.com/sql-puzzle-calculate-moving-averages/