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个集合:
-
所有logging主要采集(1分钟间隔)为一天一天的图表:4320点显示
-
存储每个半小时的平均温度的小时数集,用于显示周的图表:1008个点
-
每天收集存储6小时的平均温度,年度图表:4380点显示
然后根据所需的精度查询特定的集合。
当然,你的数据会有一点冗余,但是查询/显示会更快