Trochę późno na imprezę, ale...
Chciałem zrobić to samo i odkryłem, że mogę to osiągnąć za pomocą wyrażenia takiego:
// Pushes events only if they have the value 'A'
"events": {
"$push": {
"$cond": [
{
"$eq": [
"$event",
"A"
]
},
"A",
"$noval"
]
}
}
Myślenie tutaj jest takie, że kiedy to robisz
{ "$push": "$event" }
wtedy wydaje się, że wypycha tylko wartości inne niż null.
Stworzyłem więc kolumnę, która nie istnieje, $noval, która zostanie zwrócona jako fałszywy warunek mojego $cond.
Wydaje się, że to działa. Nie jestem pewien, czy jest to niestandardowe, a zatem podatne na złamanie pewnego dnia, ale...