我有一个场景,我需要在一个数组中替换数据,并在一个查询本身中推送另一个数组中的数据。 在这里,我使用快速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));
});};
我可以设置数据,但无法推送数据。
我不明白我错在哪里。
任何帮助都将受到高度赞赏。
答案 0 :(得分:1)
您的语法错误,您将$ 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));
});};