У меня есть документ mongoDb в этом формате
{
account_key : "tiziano",
notifications : [
{ address: "tiziano@myemail.com" , notification_type: ['booking_confirmation','booking_deletion'] },
{ address: "tiziano@youremail.com" , notification_type: ['booking_confirmation'] },
{ address: "tiziano@yxyzEmail.com" , notification_type: ['credit_card_expiration'] },
]
}
, и собрание содержит n документов в этой форме. Я пытаюсь получить все документы, у которых есть один указанный c account_key, и для каждого документа, который соответствует поиску, я хотел бы иметь тип уведомлений, который соответствует определенным c критериям. Например, я хотел бы получить обратно все уведомления, которые имеют уведомление_type booking_confirmation
{
account_key: "tiziano",
notifications : [
{ address: "tiziano@myemail.com" , notification_type: ['booking_confirmation','booking_deletion'] },
{ address: "tiziano@youremail.com" , notification_type: ['booking_confirmation'] }
]
}
Это запрос, который я использую, но он не возвращает то, что я хочу
db.getCollection("accounts").aggregate([
{ $match : { account_key : "acme" }},
{ $project : {
notification_contact: {
$filter: {
input: "$notifications",
as: "notification",
cond: { $eq : ["$$notification.notification_type", "booking_created"] }
}
}
}}
])