Quando você tem muitos campos no subdocumento e ocasionalmente ele é atualizado com novos campos, a projeção não é uma opção viável. Felizmente, desde a versão 3.4, o MongoDB tem um novo operador chamado $replaceRoot .
Tudo o que você precisa fazer é adicionar um novo estágio no final do seu pipeline.
db.getCollection('sample').aggregate([
{
$replaceRoot: {newRoot: "$command"}
},
{
$project: {score: 0 } //exclude score field
}
])
Isso lhe daria a saída desejada.
Observe que, em caso de agregação (especialmente após um $group stage) o documento 'comando' pode ser uma matriz e pode conter vários documentos. Nesse caso, você precisa $unwind o array primeiro para poder usar $replaceRoot .