Как выполнить запросы «group by» в Cosmos DB?

#azure #azure-cosmosdb #azure-cosmosdb-sqlapi

#azure #azure-cosmosdb #azure-cosmosdb-sqlapi

Вопрос:

Мне нужно иметь возможность выполнить следующий запрос или что-то подобное:

 SELECT count(1) AS userCount, f.gh
FROM f 
WHERE f.location.coordinates[1] < <MAX_LAT> 
AND f.location.coordinates[1] > <MIN_LAT>
AND f.location.coordinates[0] > <MIN_LNG> 
AND f.location.coordinates[0] < <MAX_LNG>
GROUP BY f.gh
 

У меня есть коллекция, в которой хранятся координаты пользователя на карте. При увеличении я хочу отображать местоположения отдельных пользователей, но при уменьшении я хочу отображать количество пользователей в местоположении, сгруппированных по их 5-символьному геохешу. Этот запрос — именно то, что я хочу, однако вы не можете запускать групповые запросы через rest api, как указано в документах.

Запросы, которые не могут быть обслужены шлюзом

Он не предлагает никаких альтернатив этому, и я все еще новичок в Cosmos. Как я могу успешно выполнить этот запрос?

Комментарии:

1. Можете ли вы использовать один из 4 SDK? .NET, Java, JS и Python. Очень сложно напрямую использовать REST API. SDK скрывают массу сложностей.

2. Нет, я использую . NET core API выдает ту же ошибку. DISTINCT — еще один очень важный оператор, который мне нужно использовать для других частей моей базы данных, и кажется невозможным использовать любой из этих операторов, кроме как в запросе непосредственно на портале, что бесполезно

3. Если вы используете .NET Core, пожалуйста, загрузите и используйте .NET SDK v3. Пакет Nuget здесь. nuget.org/packages/Microsoft . Azure.cosmos . Кроме того, я не знаю, почему вы пишете такой запрос. Похоже, это лучше было бы решить с помощью ST_WITHIN . docs.microsoft.com/en-us/azure/cosmos-db /…

Ответ №1:

Проблема заключалась в том, что я пытался вызвать «group by» через привязки функций Azure, а не фактические.Пакет NET SDK Nuget. Спасибо за помощь.