Prawie to miałeś...
db.test.aggregate(
{$group: {_id: '$postcode', students: {$sum: 1}}},
{$sort: {_id: -1}}
);
daje (dodałem dane testowe pasujące do twojej próbki):
{
"result" : [
{
"_id" : 2003,
"students" : 3
},
{
"_id" : 2002,
"students" : 1
},
{
"_id" : 2001,
"students" : 2
}
],
"ok" : 1
}
Masz zewnętrzny {}
wokół wszystkiego, co powodowało pewne zamieszanie. Grupowanie i sortowanie nie działały jako oddzielne operacje w potoku.
Tak naprawdę nie potrzebowałeś projektu w tym przypadku.
Aktualizacja Prawdopodobnie chcesz posortować według „uczniów”, tak aby najpierw uzyskać największe kody pocztowe (według populacji):
db.test.aggregate(
{$group: {_id: '$postcode', students: {$sum: 1}}},
{$sort: {students: -1}}
);