问题描述
我正在从事一个IOT项目,该项目与燃料量信息相关。
我正在迭代每个MongoDB文档,并尝试在图表中绘制燃油量,同时忽略了噪声值。每个文档每秒都包含燃料值,
当我绘制数据时,它会发出很多噪音,例如
- 车辆处于怠速状态,并且在图中绘制了相同的燃料数据点
- 车辆在崎rough不平的道路上行驶时会发出尖峰信号
数据收集如下所示
{
_id : 1,fuel : 100,timestamp: 2020-09-18T06:06:01.628+00:00
},{
_id : 2,fuel : 100.1,timestamp: 2020-09-18T06:06:02.628+00:
},{
_id : 1,fuel : 98,timestamp: 2020-09-18T06:06:03.628+00:
}
我正在尝试将文件燃料值的每个值与先前的文件燃料值进行比较,并找到百分比。然后,我可以给阈值加上或减去5%,然后过滤某些数据。这可以解决我遇到的第一个问题。
我不知道如何避免那些尖刻的数据点。
我尝试了聚合管道,但没有找到合适的运算符或方法来保存和比较以前的数据,有没有办法做到这一点。因为我无法平滑内存中的数据,因为数据数组有时会很大。
非常感谢您的支持。
解决方法
映射/减少将输入文档散发到处理器,文档不一定按顺序处理,因此谈论“先前”文档没有意义。
通过聚合管道,您可以$ group或$ bucket创建数据桶,然后对这些桶进行操作(例如,对桶中的值求平均值)。
如果您想对值进行复杂的数学运算,则无论如何在应用程序中都可能需要这样做。