Не могу получить идентификатор и максимальное значение CosmostDb
Я хотел бы сделать некоторые отчеты о моем CosmosDb
мой запрос
Select Max(c.results.score) from c
Это работает, но я хочу идентификатор наибольшего количества баллов, тогда я получаю исключение
Select c.id, Max(c.results.score) from c
"c.id" недопустим в списке выбора, потому что он не содержится в статистической функции
3 ответа
Вы можете выполнить следующий запрос, чтобы заархивировать то, что вы спрашиваете (хотя это может быть не очень эффективно с точки зрения RU/ времени выполнения):
Select TOP 1 c.id, c.results.score from c ORDER BY c.results.score DESC
Группирование по не поддерживается изначально в Cosmos DB, поэтому нет никакого готового способа выполнить этот запрос.
Чтобы реализовать это, используя готовые функциональные возможности, вам необходимо создать новый тип документа, который будет содержать результаты вашей агрегации, например
{ "id": 1, "наибольший рейтинг": 1000 }
Затем вам потребуется процесс в вашем приложении, чтобы поддерживать его в актуальном состоянии.
Существует также documentdb-lumenize, который позволит вам сделать это с помощью хранимых процедур. Я не использовал это сам, но это может стоить рассмотреть как альтернативу вышеупомянутому решению.
Ссылка есть:
GROUP BY теперь поддерживается в Cosmos, поэтому ваш запрос будет выглядеть следующим образом:
Select c.id, Max(c.results.score) from c Group By c.id