我有一個時間序列數據的集合。流星彙集更新子文檔
這樣的:
{ _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