获取嵌套值的平均值-在发布后预先计算并存储为字段,还是使用汇总函数进行过滤和计算?

时间:2019-05-30 18:44:54

标签: javascript mongodb aggregation-framework

我有一个连接到mongoDB的REST服务器。 我的数据库有一个包含大量测试的集合,形式如下:

{
  name: 'xxx',
  date: 'xxx',
  props: [
    {
      role: 1,
      commands: [
        {
          command: 'xxx',
          data: [
            {
              timestamp: 'xxx',
              cpu: 1,
              ram: 5
            },
            {
              timestamp: 'xxy',
              cpu: 2,
              ram: 3
            }
          ]
        }
      ]
    }
  ]
}

收藏巨大,或者至少有潜力。

Props-最多可以包含3个对象

Props.commands-最多可以包含30个对象

Props.commands.data-最多可以包含20个对象

我应该预先计算平均值并存储在每个嵌套级别中,还是使用Mongo提供的聚合函数根据需要计算平均值?

我尝试对单个文档使用嵌套的$unwind's,并且该文档已经有很长的处理时间,考虑到数据量,这是有意义的。 我想知道将文档添加到集合中时简单地存储每个级别的平均值,而不是在使用MongoDB的聚合函数之后计算它们,是否会更明智。

最终目标是使用$match过滤掉数据,然后以最快的方法聚合CPU和ram。

我对Mongo相当陌生,因此在聚合管道和功能方面的经验非常有限,因此任何提示都将受到欢迎。

谢谢!

0 个答案:

没有答案