流星循环数据

时间:2014-05-10 18:51:01

标签: mongodb meteor

我首先遇到了2个问题,如何在Mini MongoDb中循环和更新。以及如何获取_id以进行更新。

var data = [ 
{ 
    "key" : "North America" , 
    "values" : [ 
        [ 1025409600000 , 23.041422681023] , 
        [ 1028088000000 , 19.854291255832]
    ]
}, 
{ 
    "key" : "Africa" , 
    "values" : [ 
        [ 1025409600000 , 7.9356392949025] , 
        [ 1028088000000 , 7.4514668527298]
    ]
}];

这个循环功能但它只是在第一次循环时停止

for(var i = 0; i < data.length; i++) {
    Looping.insert({
        key:data[i].key,
        values:[]
    });
    var looping_id = Looping._id;
    for(var j = 0; j < data[i].values.length; j++) {
        Looping.update({
            _id: looping_id
        },
        {
            $addToSet: {values: data[i].values[j]}
        });
    }
}

1 个答案:

答案 0 :(得分:0)

假设Looping是一个集合,您可以使用以下内容插入项目:

_.each(data, function(item) {
  Looping.insert(item);
});

但是,因为您正在使用$addToSet,所以我猜测这些值可能是非唯一的。在这种情况下,您可以尝试:

_.each(data, function(item) {
  var id = Looping.insert({key: item.key});

  _.each(item.values, function(value) {
    Looping.update(id, {$addToSet: {values: value}});
  });
});

注意:

  • 调用insert时会返回插入项的ID,它不会保存在集合对象中。
  • 如果要插入大量项目,则应考虑在插入之前对每组values进行重复数据删除,以避免所有更新。