私は学生とその連絡先の詳細のデータベースを持っています。私は最も多くの学生を収容する郵便番号を見つけようとしています。学生向けの資料はこんな感じ…
{学生コード:'smi0001'、名:'bob'、名前:'smith'、郵便番号:2001}
集計フレームワークを使用して、次のようなことを行うことで、ほとんどの学生の郵便番号を見つけることができると思いました...
db.students.aggregate({$project: { postcode: 1 }, $group: {_id: '$postcode', students: {$sum: 1}}})
これは期待どおりに機能します(郵便_id
番号を「students」として返し、各郵便番号の学生数を「students」として返しますが$sort
、パイプラインに追加すると、操作の結果ではなく、学生コレクション全体で並べ替えようとしているよう$group
です。
私が試しているのはどのように見えるか...
db.students.aggregate({$project: { postcode: 1 }, $group: {_id: '$postcode', students: {$sum: 1}}, $sort: {_id: -1}})
しかし、それはコレクション全体を返し、とを無視し$project
ます$group
...私は何かが欠けていますか?生徒数の降順で並べ替えて、最初のアイテムを返すだけでいいのではないかと思いました。助けてくれてありがとう。