【发布时间】:2015-05-05 00:09:01
【问题描述】:
在我的 Meteor 应用程序中,我有一个文档(来自 mongo 集合),其中的一部分数据是一个对象数组。
我创建了一个遍历对象数组的循环,使用来自每个数组索引中的对象的信息来计算新的数据点。 (具体来说,使用平均值来计算方差和标准差)。
然后我想在该数组索引处更新对象,以包含新数据点(方差和标准差)。
JSON 对象:
"row_sum" : [
{
"name" : "Total Inches of Rainfall",
"row_int" : 1,
"mean" : 14.492753623188406
},
{
"name" : "Inches Above/Below (+/-)135 Year Average",
"row_int" : 2,
"mean" : 0.13043478260869565
}
],
我想要的输出是:
"row_sum" : [
{
"name" : "Total Inches of Rainfall",
"row_int" : 1,
"mean" : 14.492753623188406
"variance" : 1234,
"sd" : 1111
},
{
"name" : "Inches Above/Below (+/-)135 Year Average",
"row_int" : 2,
"mean" : 0.13043478260869565,
"variance" : 1234,
"sd" : 1111
}
],
这是我当前的输出:
"row_sum" : [
{
"name" : "Total Inches of Rainfall",
"row_int" : 1,
"mean" : 14.492753623188406
},
{
"name" : "Inches Above/Below (+/-)135 Year Average",
"row_int" : 2,
"mean" : 0.13043478260869565
},
{
"variance" : 48.24328113588513,
"sd" : 6.945738343465375
},
{
"variance" : 48.024652540384196,
"sd" : 6.929982145747866
}
],
如您所见,它只是将数据作为新对象附加到对象数组中,而不是更新数组循环中索引的特定对象。
这是包含循环和 Mongo 更新命令的代码部分:
for (var i = 0; i < row_sum.length; i++){
var variance = this.calculate_variance(data_summary_id, row_sum[i]);
var standard_deviation = Math.sqrt(variance);
var sum_data = {
row_sum : {
variance: variance,
sd: standard_deviation
}
}
DataSetSummary.update(data_summary_id, {$push: sum_data});
}
【问题讨论】: