我正在尝试通过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",
},
],});
感谢任何帮助或指导。