【问题标题】:updating array inside another array in mongoose在猫鼬中更新另一个数组中的数组
【发布时间】:2016-04-23 03:37:50
【问题描述】:

我有像下面这样的猫鼬模型,

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

谁能帮我解决这个问题?

【问题讨论】:

    标签: node.js mongodb mongoose mean-stack


    【解决方案1】:

    你可以试试这样的:

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

    【讨论】:

    • errmsg: “异常:不能使用部分(colorNsize of colorNsize.size)来遍历元素({colorNsize: []})”...因为colorNsize是一个我们不能做的数组以上。
    猜你喜欢
    • 2021-10-17
    • 2020-08-12
    • 2020-08-02
    • 2013-11-24
    • 1970-01-01
    • 2021-06-30
    • 1970-01-01
    • 1970-01-01
    • 2020-10-22
    相关资源
    最近更新 更多