Oi Guilherme, tudo bem? Desculpa a demora. Mas analisando aqui a documentação do Mongo, sua query faz muito sentido. Só tem um detalhe, o update sempre requer dois objetos, um com a query e outro com a operação. Você passou só um com envolve tudo, talvez por isso tenha tido erro.
Quando houver erros, lembra de postar a mensagem de erro aqui, tá bem? Ela ajuda bastante a detectar problemas.
Mas vamos lá, olha como a sua query tá escrita:
db.teste.update(
{
{ filial: { $elemMatch : { _id: ObjectId("5a8cd443ab270699828e5ea9") } } },
{ $push : { filial.$.menu: "teste" } }
}
);
Quando deveria ser assim:
db.teste.update(
{ filial: { $elemMatch : { _id: ObjectId("5a8cd443ab270699828e5ea9") } } },
{ $push : { filial.$.menu: "teste" } }
);
Testa de novo pra gente ver se agora dá certo?