MongoDB将对象推入对象内的数组

时间:2020-07-30 09:55:35

标签: arrays mongodb object router patch

我正在尝试将新对象推入具有另一个对象内部对象的数组(请参见此处的数据库架构:MongoDB set-up)。尝试在主题的subtopics [2]对象中推送注释。

这是代码,但最终会删除指定的子主题ID:

router.patch('/:topicId/:subtopicId/note', async (req, res) => {
    try {
        const subtopicNote = await Note.update(
            {_id: req.params.topicId},
            {subtopics : 
                    { _id: req.params.subtopicId, 
                        $push: {
                        notes: 
                            {note: req.body.note}       
                    }
                }
            }
        );
        res.json(subtopicNote);
    } catch (err) {
        res.json({ messsage: err})
    }
})

1 个答案:

答案 0 :(得分:0)

这对我有用:)

router.patch('/:topicId/:subtopicId/note', async (req, res) => {

    try {
        const subtopicNote = await Note.updateOne(
            {_id: req.params.topicId,  subtopics : {"$elemMatch": {"_id":req.params.subtopicId}}},
            { $push : {
                'subtopics.$.notes': {note: req.body.note}
            }
            }
        )

        res.json(subtopicNote);
    } catch (err) {
        res.json({ message: err})
    }
})