2017-08-01 95 views
1

我需要爲特定集合中的所有數據中的特定參數設置特定值。例如;我有一個數據庫,我的模式有年齡和名稱參數,我想將每個人的年齡更新爲5.我已經搜索了這些問題,但是我找不到任何類似的案例。 我該怎麼做,或者我可以用貓鼬或蒙古人或其他任何東西,但mongoshell嗎?我使用nodeJS貓鼬和表達。如何更新集合中的所有數據中的參數/ MongoDb/Nodejs

這裏是我的代碼(當然它不工作:)

'exports.changeAll = function (req, res) { 
var reqparameter=req.body.parameter; 
var database=req.params.database; 
var collection=req.params.collection; 
mongoose.Promise = global.Promise; 
mongoose.connect('mongodb://127.0.0.1::27017/' + project, { 
    useMongoClient: true, 
}) 
    .then(() => { 
     var Project = mongoose.model(collection, ProjectSchema, collection); 

     Project.update({},{$set:{parameter:reqparameter},function(err,done){ 
      if (err) 
       res.send(err); 
      else 
       res.send('done' +reqparameter); 
     } 
     }); 
    }); 

}

// reqparameter =所需參數值//

我試過mongoclient也:(這是錯誤是關於db.update不是函數)

MongoClient.connect(url, function (err, db) { 
console.log(collection,database); 
db.update({}, { $inc: { parameter: reqparameter }},{multi:true}); 

console.log('done') 

});

感謝您的時間和答案。

+0

您的貓鼬示例沒有使用'「mutli」:true',您的普通節點驅動程序示例實際上並未使用任何集合對象,因此會出錯。在你說出「不起作用」之前,你實際上需要先做有效的操作。 –

回答

1

如果你要使用貓鼬,你應該通過一個選項參數更新功能,並指定要更改所有匹配的文件與{ multi: true }

這應該工作:

Project.update({},{$set:{parameter:reqparameter}, { multi: true }, callback) 
相關問題