如何更新集合中的所有文档,其中每个文档的属性值需要不同(唯一编号)?
以下是我目前的代码。这实际上似乎更新(我没有得到错误),但数据库中的值没有更新。
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()只调用一次,但我需要为每个文档创建不同的代码。所以这些例子都不起作用。
答案 0 :(得分:0)
您可以尝试简单地保存文档,而不是尝试使用model.update()吗?
在此网址上查看此问题的答案:Update model with Mongoose, Express, NodeJS