在mongoose中更新另一个数组中的数组

时间:2016-01-18 03:09:29

标签: node.js mongodb mongoose mean-stack

我有像下面的猫鼬模型,

var product = new mongoose.Schema({
    productName: String,
    manufacturer: String,
    shotDescription: String,
    longDescription: String,
    colorNsize: [{
        color: String,
        size: [{
            sizeId: {
                type: mongoose.Schema.Types.ObjectId,
                ref: 'productSizes'
            },
            MRP: Number,
            storePrice: Number,
            stock: Number
        }]
    }]
});

我正在尝试更新文档的colorNsize字段。我的目标是将新项目推送到colorNsize数组的size数组中。

由于size是另一个数组中的数组,因此我很难更新。

我尝试了以下

product.findOneAndUpdate({
        _id: req.body.productId
    }, {
        $push: {
            colorNsize: {
                color: req.body.color,
                $push: {
                    size: req.body
                }
            }
        }
    }, {
        new: true
    },
    function (err, data) {
        return res.json(data);
    });

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

您可以尝试这样的事情:

product.findOneAndUpdate({ _id: req.body.productId },
                         { 
                           $set: {colorNsize.color: req.body.color},
                           $push: {colorNsize.size: req.body}
                         }, 
                         { upsert: true, new: true},
                         function (err, data) {
                           if(err){ return res.json(err);}
                           else{return res.json(data);}
                         });