用猫鼬更新对象数组中的值

时间:2018-09-01 07:39:06

标签: node.js express mongoose

这是我的年度预算集合中的文件

{
    "_id" : ObjectId("5b8954cf3887ee089b4d7310"),
    "year" : 2018,
    "categories" : [ 
        {
            "_id" : ObjectId("5b8954cf3887ee089b4d7312"),
            "name" : "Logistics",
            "amount" : 1500
        }, 
        {
            "_id" : ObjectId("5b8954cf3887ee089b4d7311"),
            "name" : "Finance",
            "amount" : 23030
        }
    ],
    "__v" : 0
}

我想做的是将另一个对象附加到Categories数组。以下是我对此的明确补丁要求:

app.patch('/annualBudgets/:year' , (req, res) => {
            Budgets.update({year: parseInt(req.body.year)}, {'$set' : {
                'categories.$.name' : req.body.name,
                'categories.$.amount' : req.body.amount
            }}, function(err, docs) {
                if (err) {
                    throw err
                }
                res.send(docs).status(200);
            })
        })

我将以下请求传递给

{
		"name" : "Help",
		"Amount": 122312
}

我无法弄清楚补丁请求出了什么问题。感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

由于您要更新数组元素,因此可以使用$ push方法

app.patch('/annualBudgets/:year' , (req, res) => {
            Budgets.update({year: parseInt(req.body.year)}, {'$push' : {categories : {
                name : req.body.name,
                amount : req.body.amount
           }}}, function(err, docs) {
                if (err) {
                    throw err
                }
                res.send(docs).status(200);
            })
        })