【发布时间】:2020-03-02 20:48:00
【问题描述】:
实际上,我正在创建一个物联网温度传感器数据库,其中包含一个包含 start_timestamp 和 end_timestamp 的事件系列数据库,对于每个温度变化事件,我都会在数据库中插入一个新文档, 我的架构是
var tempSchema = mongoose.Schema({
sensor_name:{
type:String
},
temp_value:{
type:Number
},
start_timestamp:{
type:Date,
},
end_timestamp:{
type:Date,
default:null
}
});
对于每个新文档插入,我必须首先更新最后一个事件的 end_timestamp,然后插入具有与我更新最后一个文档 end_timestamp 相同的时间戳的新文档。
我面临的问题
1) 我有 30 个传感器,每 2 秒我从传感器获取数据,首先我将当前值与最后一个值进行比较,如果这个值发生变化,我将触发一个事件并更新 end_timestamp 为空的最后一个值,因为事件循环非常繁忙并且节点的异步性质有时在数据库中插入相同事件的 2 个条目,唯一的区别 start_timestamp 不同(如 2020-02-22T15:52:21.639+00:00 和 2020-02-22T15: 52:21.710+00:00) 但理想情况下应该在数据库中只有一个 end_timestamp null
2) 2 个操作同时发生,现在我使用 2 个函数进行单独的操作,例如 update_entry 用于 end_timestamp 更新和 post_entry 用于新文档,mongodb 中是否有任何方法可以一起执行此操作。
请帮帮我 提前致谢
【问题讨论】:
标签: javascript node.js mongodb mongoose iot