Um pouco atrasado para a festa, mas...
Eu queria fazer a mesma coisa e descobri que poderia fazê-lo com uma expressão como esta:
// Pushes events only if they have the value 'A'
"events": {
"$push": {
"$cond": [
{
"$eq": [
"$event",
"A"
]
},
"A",
"$noval"
]
}
}
O pensamento aqui é que quando você faz
{ "$push": "$event" }
então parece empurrar apenas valores não nulos.
Então criei uma coluna que não existe, $noval, para ser retornada como a condição falsa do meu $cond.
Parece funcionar. Não tenho certeza se é fora do padrão e, portanto, suscetível a quebrar um dia, mas ..