如何查询每五个文档的字段平均值?

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/