Почти го получи...
db.test.aggregate(
{$group: {_id: '$postcode', students: {$sum: 1}}},
{$sort: {_id: -1}}
);
дава (добавих някои тестови данни, съответстващи на вашата извадка):
{
"result" : [
{
"_id" : 2003,
"students" : 3
},
{
"_id" : 2002,
"students" : 1
},
{
"_id" : 2001,
"students" : 2
}
],
"ok" : 1
}
Имахте външен {}
около всичко, което предизвикваше известно объркване. Групирането и сортирането не работеха като отделни операции в конвейера.
Всъщност не ви трябваше проектът за този случай.
Актуализиране Вероятно искате да сортирате по "ученици", така че да получите първо най-големите пощенски кодове (по население):
db.test.aggregate(
{$group: {_id: '$postcode', students: {$sum: 1}}},
{$sort: {students: -1}}
);