Meteor Collection更新子文档

时间:2016-08-07 14:20:28

标签: mongodb meteor meteor-collection2 simple-schema

我有一个时间序列数据的集合。

像这样:

{ _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的了解很少,因为我是一个业余爱好程序员。 我总是想更新最新的条目。 有人可以帮帮我吗? 也许有一个链接,我可以阅读背后的基础知识。

谢谢。 迈克尔

附:

我的代码目前很简单。

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} });

}

简单的Schema我确实喜欢这样。

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);

1 个答案:

答案 0 :(得分:0)

这可能是数字旁边的单引号吗?

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

我还建议传感器是阵列吗?像:

 Sensor [
     { ... },
     { ... }
 ]