我有一个时间序列数据的集合。流星汇集更新子文档
这样的:
{ _id: 'queBoS2mgjovC85uY',
sum_samples: 0,
type: 'Temperature',
timestamp_minute: "Sun Aug 07 2016 10:03:18 GMT-0400 (EDT)",
num_samples: 0,
Sensor:{
'0': { value: 0, real: false },
'1': { value: 0, real: false },
'2': { value: 0, real: false },
'3': { value: 0, real: false },
'4': { value: 0, real: false },
'5': { value: 0, real: false },
'6': { value: 0, real: false },
'7': { value: 0, real: false },
'8': { value: 0, real: false },
'9': { value: 0, real: false },
'10': { value: 0, real: false },
...
'59': { value: 0, real: false }
}
}
在 '0', '1' 对象是在一个小时分钟。 现在我想更新一个分钟值,我已经测量并将“真实”设置为真,真实值将指示之前的值是实际测量的传感器值而不是初始值。
但所有的Temperature.update()我试过了不起作用。 也许是因为我对流星和mongodb知之甚少,因为我是一个业余爱好程序员。 我总是想更新最新的条目。 有人可以帮我吗? 也许有一个链接,我可以阅读背后的基础知识。
谢谢。 迈克尔
附:
我的代码是目前prety简单。
if (Meteor.isServer) {
Temperatures.insert({sum_samples: 0, type: "Temperatures"});
var test = Temperatures.findOne({}, {sort: {timestamp_minute: -1}});
Temperatures.update({_id: test._id},{$set: {"Sensor.32.value": 2032, "Sensor.32.real": true} });
}
简单架构我也这么做。
Schemas = {};
Temperatures = new Meteor.Collection("Temperatures");
Schemas.seriesData = new SimpleSchema({
timestamp_minute: {
type: Date,
defaultValue: new Date
},
num_samples: {
type: Number,
defaultValue: 0
},
sum_samples: {
type: Number,
defaultValue: 0
},
type: {
type: String
},
Sensor: {
type: Object,
blackbox: true,
optional: true,
autoValue: function(){
if (this.operator === null && !this.isSet){
var object = {};
for(var i=0; i<=59;i++){
object[i]={value: 0, real: false};
}
return object;
}
}
}
});
Temperatures.attachSchema(Schemas.seriesData);
先分享你的代码,我们可以帮您 –
我已经添加了代码。目前它非常简单,因为我只测试代码。希望这可以帮助你。 – Michael