Un poco tarde para la fiesta, pero...
Quería hacer lo mismo y descubrí que podía lograrlo con una expresión como esta:
// Pushes events only if they have the value 'A'
"events": {
"$push": {
"$cond": [
{
"$eq": [
"$event",
"A"
]
},
"A",
"$noval"
]
}
}
El pensamiento aquí es que cuando lo haces
{ "$push": "$event" }
entonces parece que solo empuja valores no nulos.
Así que inventé una columna que no existe, $noval, para que se devuelva como la condición falsa de mi $condición.
Parece funcionar. No estoy seguro de si no es estándar y, por lo tanto, es susceptible de romperse algún día, pero...