Mongoose:如何使用回调中的变量更新文档?

时间:2014-05-14 03:00:45

标签: javascript mongodb mongoose

我正在遍历一个id列表,找到与该id相关联的条目,并且我想更新一个"得分"价值基于其当前价值。像这样:

id_array= ['2l3k4jixc','2343xjl','l243xkj33',.......];
var K=5;
for (var i=0, i<id_array.length;i++){
Model.findByIdAndUpdate(id_array[i], { $set: { value:update_variable }}, options, function(err,found_item){
    update_variable= ((K-found_item.score)^3)/2;
}
})

现在它正在尝试在回调函数定义update_variable之前使用$set: {score:update_variable}。所以我认为它不起作用。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

目前通常无法在MongoDB的任何形式的update语句中引用其他字段值,因此您通常会遇到&#34;发现&#34;该项目,然后发出单独的.save()方法:

Model.findById(id_array[i],function(err,found) {
    found.value = ((doc.score)^3)/2;
    found.save();
});

保存中的附加回调是可选的(建议)用于您的目的,但这是根据另一个字段的值设置一个字段的唯一当前方法。因此,除非您循环播放,否则批量更新即将发布。