В приведенной ниже коллекции я бы хотел сгруппировать по author
, а затем для каждого author
показать name
записи с наибольшим значением price
.
[
{ "name": "Design", "price": 499, "author": "ted" },
{ "name": "Launch", "price": 999, "author": "ted" },
{ "name": "Test", "price": 1200, "author": "bob" },
{ "name": "Scale", "price": 1499, "author": "bob" }
]
Итак, мой запрос должен возвращать Launch
и Scale
.
Я попытался выполнить агрегацию следующим образом, но я не уверен, что делать потом, за исключением перетаскивания всех записей на клиента затем обработать все группы, чтобы найти запись с максимальной ценой (что звучит очень неэффективно).
[
{
"$group": {
"_id": "$author",
"entry": {
"$push": {
"price": "$price",
"name": "$name"
}
}
}
}
]
Какой эффективный способ сделать это?
Спасибо!