更新Mongoose中的文档数组

时间:2014-09-09 17:51:11

标签: node.js mongodb mongoose

如何更新集合中的所有文档,其中每个文档的属性值需要不同(唯一编号)?

以下是我目前的代码。这实际上似乎更新(我没有得到错误),但数据库中的值没有更新。

Model.find({}, function (err, docs) {

    if (err) {

        console.log(err);

    };



if(docs && docs.length > 0){


    for(var i=0; i<docs.length; i++){

    //SET NEW VALUE FOR EACH DOC - VALUE MUST BE UNIQUE TO EACH DOC
        docs[i].code = generateRandomCode();    

    }


    // PASS IN ARRAY OF UPDATED DOCS TO BE SAVED
    Model.update(docs, function (err, docs) {
        if (err) {
            console.log(err);
        }

        if(!err){   
            req.updatedSuccessfully = true;
        }

        return next();



    });


}
else{

    return next();

}


});

在此之前,我试图做这样的事情:

Model.update({}, { code: generateRandomCode() }, { multi: true }, function (err,      numberAffected, raw) {
  if (err) return handleError(err);
  console.log('The number of updated documents was %d', numberAffected);
  console.log('The raw response from Mongo was ', raw);
});

这个问题是generateRandomCode()只调用一次,但我需要为每个文档创建不同的代码。所以这些例子都不起作用。

1 个答案:

答案 0 :(得分:0)

您可以尝试简单地保存文档,而不是尝试使用model.update()吗?

在此网址上查看此问题的答案:Update model with Mongoose, Express, NodeJS