无法$ push和$使用express js在mongodb中一次设置数据

我有一个场景,我需要replace一个数组中的数据,并在一个查询本身推送另一个数组中的数据。 在这里,我使用快速js框架和mongoose进行查询。

这是我写的查询:

exports.candidateRating = function(req, res) { console.log(req.query); Profiles.update({ "name": req.query.name }, { $set: { "ratings": req.body.ratings, } }, { $push: { "RoundWiseRatings": req.body.RoundWiseRatings } }, function(error, profiles) { if (error) { } return res.status(200).json(fnStruncturedData(profiless)); });}; 

在这里,我可以设置数据,但无法推送数据。

我不明白我错在哪里。

任何帮助将不胜感激。

你有错误的语法,你添加$ push作为更新函数的另一个参数,但是你想添加它作为第二个参数的另一部分。

这是更新的语法

 Model.update(conditions, update, options, callback); 

我认为这应该工作:

 exports.candidateRating = function(req, res) { console.log(req.query); Profiles.update({ "name": req.query.name }, { $set: { "ratings": req.body.ratings, }, $push: { "RoundWiseRatings": req.body.RoundWiseRatings } }, function(error, profiles) { if (error) { } return res.status(200).json(fnStruncturedData(profiless)); });}; 

你也可能想更新多个文件,这意味着你应该在选项中使用多个参数

 exports.candidateRating = function(req, res) { console.log(req.query); Profiles.update({ "name": req.query.name }, { $set: { "ratings": req.body.ratings, }, $push: { "RoundWiseRatings": req.body.RoundWiseRatings } }, { multi: true }, function(error, profiles) { if (error) { } return res.status(200).json(fnStruncturedData(profiless)); });};