[英]How to get an Array in Nodejs from a nested document in Mongodb through Mongoose?
[英]How to pull nested document from the array of documents in mongodb?
我正在嘗試刪除文檔中的嵌套對象數組。 場景是我正在使用 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
}]
我想要的是找到一種方法來刪除嵌套 typesOfTicket 數組中的文檔,比如我想刪除帶有 id 的 Object:typesOfTicketId。 (eg typesOfTicketId = "5ea7f5678b22480431f1a461"), 女票一通過其ID。
我已經嘗試過這個查詢:
await EventDate.update({event: eventid}, {
$pull: {
typesOfTicket: {
_id: "typesOfTicketIDHERE"
}
}
});
但是上面給定的查詢僅在我刪除 eventDays 數組的第一個索引時才有效,例如如果我刪除 ID:“5ea7f54b8b22480431f1a456”,那么這將起作用,但如果我要在第二個索引上查找 id,例如“Female”票“/”5ea7f5678b22480431f1a461”,那么它不工作。
我找到了解決問題的方法,經過一些調整,上述查詢確實可以正常工作
await EventDate.update({event: eventid}, {
$pull: {
typesOfTicket: {
_id: "typesOfTicketIDHERE"
}
}
}, { multi: true });
只需將多參數指定為 true 即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.