我有一个有序的清单。我想在中间添加一个列表。我排序没有问题,但修改似乎有点困难。主要目标是找到所有等于发送或更大的数字并更新。我会在找到它们时更新它们,但是我不能在循环中使用它。
function updateNumbersAfterArticles(searchableid, number){
var m_searchableid = new ObjectId(searchableid);
m_Kbase_data.findOne( {_id : m_searchableid}, function(err, kbase_data){
if (kbase_data.Steps.length === 1){
var updated_step = new m_KbaseScript_schema({step: kbase_data.Steps[0].step + 1, description : kbase_data.Steps[0].description, image : kbase_data.Steps[0].image});
m_Kbase_data.update({_id : m_searchableid, 'Step._id' : kbase_data.Steps[0]._id },
{$set: { "Steps.$": updated_step }},
function(err, updateRows){
//if (err) res.status(500);
console.log(updateRows);
}
);
return;
}
else{
var updated_step2 = [];
for (var i = 1; i < kbase_data.Steps.length; i++) {
if (kbase_data.Steps[i].step >= number){
console.log("pushed");
updated_step2.push( new m_KbaseScript_schema({step: kbase_data.Steps[i].step + 1, description : kbase_data.Steps[i].description, image : kbase_data.Steps[i].image}));
}
}
console.log(updated_step2);
m_Kbase_data.update({_id : m_searchableid, },
{$set: { "Steps.$": updated_step2 }},
function(err, updateRows){
//if (err) res.status(500);
console.log(updateRows);
}
);
}
});
}
当我运行它时,我可以看到所有的推动。它们似乎正确更新。但是,我没有更新数据库。
答案 0 :(得分:0)
这就是我如何运作的方式。 (我还没有测试过一个物体):
val aggCols = df.schema.collect {
case StructField(colName, IntegerType, _, _) => avg(colName).as(colName + "_avg")
case StructField(colName, StringType, _, _) => first(colName).as(colName + "_first")
}