Не могу получить идентификатор и максимальное значение 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, который позволит вам сделать это с помощью хранимых процедур. Я не использовал это сам, но это может стоить рассмотреть как альтернативу вышеупомянутому решению.

Ссылка есть:

https://github.com/lmaccherone/documentdb-lumenize

GROUP BY теперь поддерживается в Cosmos, поэтому ваш запрос будет выглядеть следующим образом:

      Select c.id, Max(c.results.score) from c Group By c.id
Другие вопросы по тегам