Du havde det næsten...
db.test.aggregate(
{$group: {_id: '$postcode', students: {$sum: 1}}},
{$sort: {_id: -1}}
);
giver (jeg tilføjede nogle testdata, der matcher din prøve):
{
"result" : [
{
"_id" : 2003,
"students" : 3
},
{
"_id" : 2002,
"students" : 1
},
{
"_id" : 2001,
"students" : 2
}
],
"ok" : 1
}
Du havde en ydre {}
omkring alt, hvilket skabte en del forvirring. Gruppen og sorteringen fungerede ikke som separate operationer i pipelinen.
Du havde ikke rigtig brug for projektet til denne sag.
Opdater Du vil sikkert gerne sortere efter "studerende", f.eks. for at få de største postnumre (efter befolkning) først:
db.test.aggregate(
{$group: {_id: '$postcode', students: {$sum: 1}}},
{$sort: {students: -1}}
);