如何在回调中使用变量更新文档?

Mongoose: How can I update a document using a variable in the callback?

本文关键字:变量 更新 文档 回调      更新时间:2023-09-26

我正在遍历一个id列表,找到与该id相关的条目,并且我想根据其当前值更新一个"score"值。像这样:

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}。所以我认为这行不通。我该怎么做呢?

目前没有办法在MongoDB的任何形式的update语句中引用另一个字段值,所以你通常坚持"找到"项目,然后发出一个单独的.save()方法:

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

根据您的目的,保存中的附加回调是可选的(建议),但这是当前根据另一个字段的值设置一个字段的唯一方法。所以批量更新是正确的,除非你是循环。