node.js - 我将如何使用 Mongoose 创建和更新时间序列?

标签 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 后重置。在尝试访问“值”时有没有办法使用这个索引,例如使用 mongoose 更新和 '$set: { 'values.' + 索引:myValue }'?

最佳答案

  1. 您的架构应该是:

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

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

var mySchema = new mongoose.Schema({
      timestamp_minute: Date,
      type: String,
      values: {
        type: [ Number ],
        default: function() { return Array(60).fill(0); }
      }
    });

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

关于node.js - 我将如何使用 Mongoose 创建和更新时间序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38703771/

相关文章:

regex - MongoDB 正则表达式查询以查找 unicode 替换字符

node.js - 聚合组上的 Mongoose 错误

node.js - 如何在 Mongoose 中使用 .slice

javascript - 在浏览器中打开来自 Electron 的链接

node.js - 在 node.js 中,我将如何遵循最小特权原则?

node.js - Package.json 中的新字段 false

java - 将base64编码的字符串存储在HBase中

ruby-on-rails - 为什么当我停止并重新启动我的 mongod 服务时会出现应用程序错误

node.js - 使用express循环 Mongoose 模式函数,将数据收集到数组中并最终使用所有数据渲染页面

node.js - app.use 不适用于其他类 Express