mongodbdate时间filter和聚合

我有一个MongoDB qith一个集合包含像

{ timestamp: <unix timestamp>, sensor: <string>, temperatore: number } 

完整的堆栈是

  • 硬件:
    • 覆盆子pi 3
  • 后端:
    • mongodb 2.4.16
    • nodejs 6.8.1
    • mongodn(节点模块)2.2.11
  • 前端
    • angularjs 1.5.8
    • highcharts 5
    • highcharts-ng 0.0.13

在我的实际设置中,我每分钟都有一个logging,来自3个不同的传感器,所以每天4320条logging。 这对一天以上的图表来说很好。

我想find一种方法来减lesslogging的数量,因此绘制一周的时间更快,我不需要发送所有32040条logging。

我正在考虑每10分钟获取一个值(图表不够精确,但不需要放大),在节点级别进行过滤,但是当我想要绘制图表即1年(1.5 Mlogging)。

所以我想就如何有效地做到这一点提出一些意见。 可能对find()调用有一些精心devise的filter,但除了迁移到传统的数据库(PostgreSQL或Mariadb)外,我想不出任何可行的方法。

一个解决scheme可以是预先计算一小时/天的平均温度并将其保存在另一个集合中。 例如,你可以有3个集合:

  1. 所有logging主要采集(1分钟间隔)为一天一天的图表:4320点显示

  2. 存储每个半小时的平均温度的小时数集,用于显示周的图表:1008个点

  3. 每天收集存储6小时的平均温度,年度图表:4380点显示

然后根据所需的精度查询特定的集合。

当然,你的数据会有一点冗余,但是查询/显示会更快