【发布时间】:2015-04-04 19:37:44
【问题描述】:
我正在尝试检测集合中某个值的“趋势”。
假设我有以下内容:
{ created_at: 2014-12-01, value:1015 }
{ created_at: 2014-12-01, value:1015 }
{ created_at: 2014-12-01, value:1019 }
{ created_at: 2014-12-02, value:1018 }
{ created_at: 2014-12-02, value:1021 }
{ created_at: 2014-12-03, value:1010 }
{ created_at: 2014-12-03, value:1012 }
{ created_at: 2014-12-03, value:1011 }
{ created_at: 2014-12-04, value:1012 }
我只想有这样的输出:
{ created_at: 2014-12-01, average: 1016, diff: 0}
{ created_at: 2014-12-02, average: 1019, diff: 3}
其中 diff 是两者的平均值之差 两个日期。
我想出了如何计算平均值,找到集合中的最小值/最大值和第一个/最后一个值,但找不到比较两个平均值的方法...
【问题讨论】:
-
如果在应用程序代码中计算平均差异会更好。目前可能无法使用聚合框架。
-
您无法像使用聚合框架(一个或多个管道)那样实际计算输出,但是您可以计算很多东西。我认为更多解释您如何以及为什么检测趋势将是帮助我们提供好的建议的最佳方式。
-
@wdberkeley 我有一个集合,其中包含来自传感器网络(名为“sensor_readings”)的读数。读数以随机时间出现,并以您在示例中看到的方式存储 - 只需添加一个完整的时间戳。我想每 10 分钟聚合一次数据,每分钟对它们进行分组,计算分钟平均值以及与前一分钟的差异。
标签: mongodb mapreduce mongodb-query aggregation-framework