MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

ordinamento di aggregazione mongodb

Ce l'hai quasi fatta...

db.test.aggregate(
  {$group: {_id: '$postcode', students: {$sum: 1}}}, 
  {$sort: {_id: -1}}
);

dà (ho aggiunto alcuni dati di test corrispondenti al tuo campione):

{
  "result" : [
    {
        "_id" : 2003,
        "students" : 3
    },
    {
        "_id" : 2002,
        "students" : 1
    },
    {
        "_id" : 2001,
        "students" : 2
    }
  ],
  "ok" : 1
}

Avevi un {} esterno intorno a tutto, il che stava creando un po' di confusione. Il gruppo e l'ordinamento non funzionavano come operazioni separate nella pipeline.

Non avevi davvero bisogno del progetto per questo caso.

Aggiorna Probabilmente vorrai ordinare per "studenti", in questo modo, per ottenere prima i codici postali più grandi (per popolazione):

db.test.aggregate(
  {$group: {_id: '$postcode', students: {$sum: 1}}}, 
  {$sort: {students: -1}}
);