Você quase conseguiu...
db.test.aggregate(
{$group: {_id: '$postcode', students: {$sum: 1}}},
{$sort: {_id: -1}}
);
dá (adicionei alguns dados de teste correspondentes à sua amostra):
{
"result" : [
{
"_id" : 2003,
"students" : 3
},
{
"_id" : 2002,
"students" : 1
},
{
"_id" : 2001,
"students" : 2
}
],
"ok" : 1
}
Você tinha um
{}
externo em torno de tudo, o que estava causando alguma confusão. O grupo e a classificação não estavam funcionando como operações separadas no pipeline. Você realmente não precisava do projeto para este caso.
Atualizar Você provavelmente deseja classificar por "alunos", assim, para obter os maiores CEPs (por população) primeiro:
db.test.aggregate(
{$group: {_id: '$postcode', students: {$sum: 1}}},
{$sort: {students: -1}}
);