Lorsque vous avez de très nombreux champs dans le sous-document et qu'il est parfois mis à jour avec de nouveaux champs, la projection n'est pas une option viable. Heureusement, depuis la version 3.4, MongoDB a un nouvel opérateur appelé $replaceRoot .
Tout ce que vous avez à faire est d'ajouter une nouvelle étape à la fin de votre pipeline.
db.getCollection('sample').aggregate([
{
$replaceRoot: {newRoot: "$command"}
},
{
$project: {score: 0 } //exclude score field
}
])
Cela vous donnerait la sortie souhaitée.
Notez qu'en cas d'agrégation (surtout après un $group stage) le document 'command' peut être un tableau et peut contenir plusieurs documents. Dans ce cas, vous devez $unwind le tableau en premier pour pouvoir utiliser $replaceRoot .