Я пытаюсь удалить массив вложенных объектов в моем документе. Сценарий состоит в том, что я ищу дни, для которых будет организовано событие, используя его Eventid
const { eventid, typesOfTicketId } = req.params;
const eventDays = await EventDate.find({event: eventid});
Здесь Eventid передается из параметров как "5e9c0f0593ab3c058e282bfa". Затем я хочу удалить запрошенный день из массива вложенных объектов. Из вышеприведенного запроса я получаю массив дат, и для каждого индекса массива документ имеет следующий формат:
[{
"_id" : ObjectId("5ea7f54b8b22480431f1a455"),
"day" : "1588186800",
"typesOfTicket" : [
{
"_id" : ObjectId("5ea7f54b8b22480431f1a456"),
"ticket" : "Adult Tickets",
"noTickets" : 40,
"price" : 50,
"ticketsLeft" : 40
},
{
"_id" : ObjectId("5ea7f54b8b22480431f1a457"),
"ticket" : "Children Tickets",
"noTickets" : 50,
"price" : 30,
"ticketsLeft" : 50
}
],
"event" : ObjectId("5e9c0f0593ab3c058e282bfa"),
"__v" : 0
},
{
"_id" : ObjectId("5ea7f5678b22480431f1a45f"),
"day" : "1588273200",
"typesOfTicket" : [
{
"_id" : ObjectId("5ea7f5678b22480431f1a460"),
"ticket" : "Male Tickets",
"noTickets" : 50,
"price" : 5,
"ticketsLeft" : 50
},
{
"_id" : ObjectId("5ea7f5678b22480431f1a461"),
"ticket" : "Female Tickets",
"noTickets" : 50,
"price" : 5,
"ticketsLeft" : 50
}
],
"event" : ObjectId("5e9c0f0593ab3c058e282bfa"),
"__v" : 0
}]
Я хочу найти способ удалить документ во вложенных типахOfTicket массив, например, скажем, я хочу удалить объект с id: typesOfTicketId. (например, typesOfTicketId = "5ea7f5678b22480431f1a461"), женский билет, передав его идентификатор.
Я уже пробовал этот запрос:
await EventDate.update({event: eventid}, {
$pull: {
typesOfTicket: {
_id: "typesOfTicketIDHERE"
}
}
});
Но указанный выше запрос работает только если я Я удаляю первый индекс массива eventDays, как если бы я удалял идентификатор: «5ea7f54b8b22480431f1a456», тогда это будет работать, но если я собираюсь для идентификаторов по второму индексу, как «Женский билет» / «5ea7f5678b22480431f1a461», то это не работает.