Node.js 无法使用express js在mongodb中一次$push和$set数据

Node.js 无法使用express js在mongodb中一次$push和$set数据,node.js,mongodb,express,mongoose,Node.js,Mongodb,Express,Mongoose,我有一个场景,在这个场景中,我需要替换一个数组中的数据,并在一个查询中将数据推送到另一个数组中。 这里我使用expressjsframework和mongoose进行查询 以下是我写的查询: exports.candidateRating = function(req, res) { console.log(req.query); Profiles.update({ "name": req.query.name }, { $set: { "ratings": re

我有一个场景,在这个场景中,我需要替换一个数组中的数据,并在一个查询中将数据推送到另一个数组中。 这里我使用expressjsframework和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作为更新函数的另一个参数,但您确实希望将其添加为第二个参数的另一部分

这是update的语法

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));

});};

你能发布错误消息吗?@arjunkori我没有收到任何错误,但问题是数据库中的RoundWiseRating是空数组,尽管我在req.body.RoundWiseRating中获得数据