时间序列文档与猫鼬node.js?

时间:2019-04-24 14:03:00

标签: node.js mongodb mongoose

我下面有一个这样的模式。

<head>

现在应该将数据在文档中压入“值” 5分钟,然后在5分钟后而不是将其压入“值”,而是创建另一个文档,并在接下来的5分钟内将数据压入“值”,依此类推,例如

const activePowerSchema = new mongoose.Schema({
  nr: {
type: String,
required: true,
minlength: 2,
maxlength: 50
},

 value: { 
type: [Number],
required: true,
minlength: 0
},

 epoch_timestamp: {
type: Number,
required: true,
minlength: 0
}
});

5分钟后,出现一个新文档,如..

{"nr": "test_nr", "epoch_timestamp":"1556114198", "value":[200,300,500,200]} 

猫鼬内是否有任何东西,或者我是否必须做一个逻辑来检查时间,如果时间少于5分钟,然后推入数组,每5分钟之后再生成一个新文档? 非常感谢

1 个答案:

答案 0 :(得分:1)

我唯一想到的就是创建一个只有一个文档的新集合:

const lastEpochSchema = new mongoose.Schema({
    timestamp: { type: Date },
});

module.exports = mongoose.model('LastEpoch', lastEpochSchema);

然后,每次您要向value中插入新的activePower时,只需查询:

const lastEpoch = await LastEpoch.findOne();

然后将其与当前Date.now()进行比较,如果相差超过5 * 1000(5秒),则更新LastEpoch并将新文档插入activePower。如果少于5秒,则将值推至当前的activePower,其中activePower.epoch_timestamp等于LastEpoch