2015-12-06 7 views
0

Я пытаюсь использовать find (not aggregation), чтобы дать мне максимальную оценку студентом на тесте. По существу, это будет сортировка учеником, найти верхнюю оценку для этого ученика, а затем отсортировать результирующий набор. Вот данные:MongoDB Max, Sort и Limit

{ "_id" : 1, "name" : "Pat", "score" : 97 } 
{ "_id" : 1, "name" : "Pat", "score" : 92 } 
{ "_id" : 2, "name" : "Pat", "score" : 89 } 
{ "_id" : 3, "name" : "Ken", "score" : 91 } 
{ "_id" : 4, "name" : "Ken", "score" : 81 } 

Я ищу результат выглядеть следующим образом (где возвращается только студенты наивысший балл):

{ "_id" : 1, "name" : "Pat", "score" : 97 } 
{ "_id" : 2, "name" : "Ken", "score" : 91 } 

Я пробовал много различных комбинаций, но может не получится. Я знаю в SQL, как бы я это сделал. Вот мой текущий код, который только его сортировку:

db.grades.find().sort({score: -1}) 

ответ

-1

Вы можете использовать:

db.grades.find().sort('-score').distinct('name').sort('score') 
+0

TypeError: Объект DBQuery: mydb.grades -> { "запрос": {}, "OrderBy" : "-score"} не имеет метода 'distinct' – jKraut

+0

Не знаете, почему? MongoDB поддерживает https://docs.mongodb.org/v3.0/reference/method/db.collection.distinct/ –

+0

Глядя на документы, он появляется, потому что distinct() не находится внутри find() – jKraut