猫鼬$ pull不删除ObjectId

时间:2020-06-02 17:25:26

标签: node.js mongodb express mongoose

我正在尝试通过ObjectId删除嵌入的子文档。我有一个带有标签的父事件,这些标签是它们自己的文档,具有嵌入到父事件中的自己的架构。当我运行下面的代码时,标记不会被删除。如果我更改了要删除其名称的标签,则使用相同的代码删除该标签。从我阅读的文档中不知道我在这里做错了什么,似乎应该可以。.

这是文档:

{
"_id": "5ed67e2908fb3c03ac251ec6",
"eventStatus": "draft",
"title": "Testing tag removal",
"tags": [
    {
        "events": [
            "5ed67dddf909c05bf4cf72b9",
            "5ed67e2908fb3c03ac251ec6"
        ],
        "_id": "5ed67dddf909c05bf4cf72ba",
        "name": "Remove Tag",
        "slug": "remove",
        "__v": 0
    }
]

}

这是要删除的代码:

app.put(
    "/api/remove/event/field/:id/:name/:value",
    requireLogin,
    async (req, res) => {
        const result = await Events.findByIdAndUpdate(
            req.params.id,
            { $pull: { tags: { _id: req.params.value } } },
            { new: true }
        );
        console.log(result)
        res.send(result);
    }
);

console.log显示未删除标签。

“我的架构”如下所示,“标签”引用了它自己的架构:

const eventsSchema = new Schema({
_createdBy: { type: Schema.Types.ObjectId, ref: "Users" },
title: String,
createdDate: Date,
modifiedDate: Date,
eventStatus: String,
category: String,
tags: [tagSchema],});

标记架构:

const tagSchema = new Schema({
name: String,
slug: String,
events: [
    {
        type: mongoose.Schema.Types.ObjectId,
        ref: "Events",
    },
],});

感谢任何帮助或指导。

0 个答案:

没有答案