首页 > 解决方案 > findByIdAndDelete 带有 mongodb 和 mongoose 的子文档,( nodejs )

问题描述

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

我正在使用 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 吗?

标签: node.jsmongodbmongoose

解决方案


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

长话短说,您应该使用单独的模型,所有这些模型都相互引用。改变你现在拥有的东西会很痛苦,但实际上它会变得更干净。

您应该有一个Store引用模型的模型Office和一个Office引用模型的Items模型


推荐阅读