如何使用mongoose创建和更新时间序列?

时间:2016-08-01 16:29:36

标签: node.js mongodb mongoose

我想遵循这种架构设计,因为它似乎很好:http://blog.mongodb.org/post/65517193370/schema-design-for-time-series-data-in-mongodb

理想情况下,我想记录每秒钟捕获数据的文档 - 就像在早期的例子中一样。

我遇到了3个不同的障碍:

1)我不太确定架构应该是什么样子 - 目前我有类似的东西:

var mySchema = new mongoose.Schema({
  timestamp_minute: String,
  type: String,
  values: [ Number ]
});

2)'values'数组的长度应为60(在一分钟内存储我们的一秒数据间隔数据点)。我怎样才能用0来预先填充这个数组?

3)如何更新此阵列。我想在我的Node.js中,因为我在第二次获得频繁和一致的更新,我可以使用一个获得增量的索引,然后在59之后重置。有没有办法在尝试访问'values'时使用这个索引,例如使用mongoose更新和'$ set:{'值。' + index:myValue}'?

1 个答案:

答案 0 :(得分:3)

  1. 您的架构应该是:
  2. var mySchema = new mongoose.Schema({
          timestamp_minute: Date,
          type: String,
          values: {
            type: [ Number ],
            default: function() { return Array(60).fill(0); }
          }
        });

    1. 您不必预先填充它。在js中,即使数组为空,也可以设置所需的任何索引。但是,如果你想这样做:
    2. {{1}}

      1. 是。这就是你在文章中看到的方法。