我有一个学生数据库及其联系方式。我试图找出容纳最多学生的邮政编码。学生的文件看起来像这样......
{学生代码:'smi0001',名字:'bob',姓氏:'smith',邮编:2001}
我想我可以使用聚合框架来找出大多数学生的邮政编码,方法是......
db.students.aggregate({$project: { postcode: 1 }, $group: {_id: '$postcode', students: {$sum: 1}}})
这可以按预期工作(将邮政编码_id
和每个邮政编码中的学生人数返回为“学生”,但是如果我添加$sort
到管道中,它似乎会尝试按整个学生集合而不是$group
操作结果进行排序。
我正在尝试的看起来像......
db.students.aggregate({$project: { postcode: 1 }, $group: {_id: '$postcode', students: {$sum: 1}}, $sort: {_id: -1}})
但它会返回整个集合并忽略$project
and $group
...我错过了什么吗?我以为我只能按学生人数降序排序并返回第一项。提前感谢您的帮助。