C'est ainsi que je m'y prendrais. Pour que vous supprimiez l'"artefact" de l'identifiant de groupe, vous devez projeter la sortie du groupe et ne pas inclure l'identifiant.
db.getCollection('MyClass').aggregate( [
{$unwind: '$Class'},
{ $project : { Name : 1 ,
Occupation : 1,
Class : {
ClassType:1,
Professors:{
$cond: {
if: { $eq: ["$Class.ClassType", "English"] },
then: [],
else: "$Class.Professors"
}
}
}
}
},
{$group: {
_id: '$_id',
Name: {$first: '$Name'},
Occupation: {$first: '$Occupation'},
Class: {$push: '$Class'}
}},
] )