2014-11-16 130 views
1

温度记录器每1秒钟记录一次温度,使用Meteor.js实时图表显示过去5秒内的平均温度。创建新的Mongodb文档vs推入文档阵列

将每个温度读数保存为新的Mongodb文档是否是最佳做法?或者将新读数推到与特定温度记录器相对应的文档中的阵列中?

对于第二种情况,使用cursor.observeChanges时,Meteor.js客户端绘制图表是否会收到整个文档?如果是这样,那么这可能是一个巨大的文件,每秒钟的客户端下载数月的温度数据?

+0

建议将每个读数保存为新文档而不是推送到数组。详细的解释可以在['here']找到(http://askasya.com/post/largeembeddedarrays) –

回答

4

这种数据被称为时间序列,MongoDB已经完成了anumberwebinars和博客posts处理这些数据的最佳方式。

其基本思想是在单个文档中的每次测量文档和所有测量之间进行交叉。你创建一个文档,保存一段时间的所有度量(比如说一天)。要避免文档移动和“漏洞”,您需要为文档预先分配具有无效值(例如,0,-1,-infinity)的文档以进行测量。

HTH - Rob。