findByIdAndDelete用mongodb和mongoose删除子文档((nodejs)

时间:2019-02-20 20:00:04

标签: node.js mongodb mongoose

我正在尝试删除我在非常深的嵌套模式中拥有的子文档...

我正在使用findByIdAndUpdate方法,但没有删除子文档。

我的nodejs中有这个

///我假装删除数组“ items”中的子文档

storeCtrl.deleteAlmacen = (req, res) => {
    storeModel.findByIdAndDelete(req.params.id).then(() => {
        res.json('deleted')
    }).catch((err) => {
        res.json(err)
    })
}

这是我的模式

//我没有复制和粘贴,所以可能有一些语法错误

 {
            "_id" : ObjectId("5c6cd20f13f0940e0cc214c5"),
            "store" : [
                    {
                            "_id" : ObjectId("5c6cd20f13f0940e0cc214c6"),
                            "office" : [
                                    {
                                            "_id" : ObjectId("5c6cd21f13f0940e0cc214c8"),
                                            "items" : [
                                                    {
                                                            "_id" : ObjectId("5c6cd22e13f0940e0cc214cb"),
                                                            "pen" : "3",
                                                            "paperId" : "a4"
                                                    }
                                            ],
                                            "employees" : [ ],
                                            "work" : 1

                                    }
                                      ]
                     }
                      ]
    }

我是否必须使用其他方法代替findByIdAndDelete?

1 个答案:

答案 0 :(得分:1)

看看这个解决方案:Update nested subdocument in Mongoose

长话短说,您应该使用单独的模型,所有模型都相互引用。改变现在的生活会很痛苦,但实际上,它将变得更加清洁。

您应该有一个引用Store的{​​{1}}模型和一个引用Office模型的Office模型