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

时间:2019-06-13 08:45:31

标签: mongodb moving-average

我是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分钟打印一次数据(文档)

1 个答案:

答案 0 :(得分:1)

您要寻找的被称为“移动平均”。 Moving averages with MongoDB's aggregation framework?在MongoDB中提供了解决方案。

具有Window功能的SQL数据库可以更优雅地做到这一点:https://www.essentialsql.com/sql-puzzle-calculate-moving-averages/