更新嵌套的猫鼬数组

时间:2019-01-28 07:10:51

标签: node.js mongodb mongoose

我一直在尝试更新猫鼬数据,其中包含深层嵌套的对象数组。但是它没有按预期工作。这是我的mongoDB嵌套数组:

    {
        "_id" : ObjectId("5be1698779d7984c8ed0e987"),
{
    "main": [
        {
            "sub": "dum-one",
            "text": "dummy one",
            "textKey": "",
            "index": "1.0",
            "subjects": [
                {
                    "id": "1.1.1",
                    "text": "Test",
                    "textKey": "",
                    "index": "1.1.1",
                    "type": "checkbox",
                    "comment": "",
                    "image": "",
                    "answer": ""
                }
            ]
        },
        {
            "sub": "category two",
            "text": "Test data two",
            "textKey": "",
            "index": "2.0",
            "subjects": [
                {
                    "id": "2.1",
                    "text": "check test.",
                    "textKey": "",
                    "index": "2.1",
                    "type": "checkbox",
                    "comment": "",
                    "image": "",
                    "answer": ""
                }

    ]
}
]
}           

我在前面使用Angular来更改表单值,并且数据来自上面的JSON。但它没有更新,我尝试了很多方法。我的问题是我无法访问确切的查询。这是我尝试过的。

router.post("/edit", (req, res) => {
    Template.update({
        "main.index": req.body.id,
        "main.text": req.body.text,
        "main.textKey": "",
    }, {
        "$set": {
            "main.index": req.body.id,
            "main.text": req.body.text,
        }
    }, {
        new: true,
        upsert: true
    }).then(update => {
        if (update) {
            console.log(update);
            res.status(200).json({
                message: "value updated"
            });
        } else {
            res.status(500).json({
                message: "error occured"
            });
        }
    });
});

现在我知道upsert会创建新的对象ID,但没有它甚至不会创建它。我想同时更改main> text和main> index。

P.S:我已经搜索了stackoverflow和google,但找不到解决方案。

我也在尝试从表单中动态更改。

喜欢:

代替

“ main.text”:“虚拟” 我已经尝试过“ main。$。text,但是它都没有帮助 我想从表单主体获取值

并且我想保持_id不变,这样它就不会创建新数组或至少替换前一个数组

0 个答案:

没有答案