Vous l'avez presque eu...
db.test.aggregate(
{$group: {_id: '$postcode', students: {$sum: 1}}},
{$sort: {_id: -1}}
);
donne (j'ai ajouté des données de test correspondant à votre échantillon) :
{
"result" : [
{
"_id" : 2003,
"students" : 3
},
{
"_id" : 2002,
"students" : 1
},
{
"_id" : 2001,
"students" : 2
}
],
"ok" : 1
}
Vous aviez un {}
externe autour de tout, ce qui provoquait une certaine confusion. Le groupe et le tri ne fonctionnaient pas comme des opérations distinctes dans le pipeline.
Vous n'aviez pas vraiment besoin du projet pour ce cas.
Mettre à jour Vous voudrez probablement trier par "étudiants", comme ceci, pour obtenir les plus grands codes postaux (par population) en premier :
db.test.aggregate(
{$group: {_id: '$postcode', students: {$sum: 1}}},
{$sort: {students: -1}}
);