У меня есть база данных студентов и их контактные данные. Я пытаюсь найти почтовый индекс, в котором размещается большинство студентов. Документы для студентов выглядят примерно так...
{studentcode: '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
и $group
...
Я что-то упускаю? Я думал, что просто смогу сортировать по убыванию числа студентов и вернуть первый предмет.
Заранее благодарим за любую помощь.