2016-08-07 158 views
0

我有一個時間序列數據的集合。流星彙集更新子文檔

這樣的:

{ _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); 
+0

先分享你的代碼,我們可以幫您 –

+0

我已經添加了代碼。目前它非常簡單,因爲我只測試代碼。希望這可以幫助你。 – Michael

回答

0

難道是單引號的整數?

Temperatures.update({_id: test._id},{$set: {"Sensor.'32'.value": 2032, "Sensor.'32'.real": true} }); 

我還可以建議Sensor是一個數組嗎?喜歡:

Sensor [ 
    { ... }, 
    { ... } 
] 
+0

感謝您的反饋。當我使用您的更新代碼時,我的更新無法按預期工作。我會得到這個新字段[code]'\ '32 \'':{value:2032,real:true} [/ code]是一個數組。更容易訪問?數組的優點是什麼?你會怎麼做? – Michael

+0

以及我如何更新它們?與Temperatures.update({_ id:test._id},{$ set:{「Sensor。[32] .value」:2032,「Sensor。[32] .real」:true}});它不工作。 – Michael

+0

@Michael Syntax將會是''Sensor.32。'。此外,你可以使用'''反引號來使你的評論格式成爲monotype,所以\'一些代碼\'變成'一些代碼'(我躲過了那些反引號通過\\'讓它出現在那裏,因此爲什麼沒有成爲代碼) –