sql >> Databasteknik >  >> NoSQL >> MongoDB

mongodb aggregationssort

Du hade det nästan...

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

ger (jag har lagt till några testdata som matchar ditt exempel):

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

Du hade en yttre {} runt allt, vilket orsakade viss förvirring. Gruppen och sorteringen fungerade inte som separata operationer i pipelinen.

Du behövde egentligen inte projektet för det här fallet.

Uppdatera Du vill förmodligen sortera efter "studenter", som så, för att få de största postnumren (efter befolkning) först:

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


  1. Mongoid Group By eller MongoDb group by in rails

  2. Fastställande av den bästa arkitekturen för en MongoDB-klusterinstallation

  3. Hantering av övergående nätverksfel med StackExchange.Redis

  4. Hur man använder ny URL från mongodb 3.6 för att ansluta från golang