Executa uma consulta de agregação.
Em vez de produzir resultados Document
como Firestore.RunQuery
, esta API permite executar uma agregação para produzir uma série de AggregationResult
no lado do servidor.
Exemplo de alto nível:
-- Return the number of documents in table given a filter.
SELECT COUNT(*) FROM ( SELECT * FROM k where a = true );
Solicitação HTTP
POST https://firestore.googleapis.com/v1beta1/{parent=projects/*/databases/*/documents}:runAggregationQuery
A URL usa sintaxe de transcodificação gRPC .
Parâmetros de caminho
Parâmetros | |
---|---|
parent | Obrigatório. O nome do recurso pai. No formato: |
Solicitar corpo
O corpo da solicitação contém dados com a seguinte estrutura:
Representação JSON |
---|
{ // Union field |
Campos | |
---|---|
Campo de união query_type . A consulta a ser executada. query_type pode ser apenas um dos seguintes: | |
structuredAggregationQuery | Uma consulta de agregação. |
Campo de união consistency_selector . O modo de consistência da consulta tem como padrão consistência forte. consistency_selector pode ser apenas um dos seguintes: | |
transaction | Execute a agregação em uma transação já ativa. O valor aqui é o ID da transação opaca para executar a consulta. Uma string codificada em base64. |
newTransaction | Inicia uma nova transação como parte da consulta, padronizando como somente leitura. O novo ID da transação será retornado como a primeira resposta no stream. |
readTime | Executa a consulta no carimbo de data/hora fornecido. Deve ser um carimbo de data/hora com precisão de microssegundos da última hora ou, se a recuperação pontual estiver ativada, também pode ser um carimbo de hora de um minuto inteiro dos últimos 7 dias. Um carimbo de data/hora no formato RFC3339 UTC "Zulu", com resolução de nanossegundos e até nove dígitos fracionários. Exemplos: |
Corpo de resposta
A resposta para Firestore.RunAggregationQuery
.
Se for bem-sucedido, o corpo da resposta conterá dados com a seguinte estrutura:
Representação JSON |
---|
{
"result": {
object ( |
Campos | |
---|---|
result | Um único resultado de agregação. Não presente ao relatar progresso parcial. |
transaction | A transação que foi iniciada como parte desta solicitação. Presente apenas na primeira resposta quando a solicitação solicitou o início de uma nova transação. Uma string codificada em base64. |
readTime | A hora em que o resultado agregado foi calculado. Isto está sempre aumentando monotonicamente; nesse caso, é garantido que o AggregationResult anterior no fluxo de resultados não mudou entre seu Se a consulta não retornar nenhum resultado, será enviada uma resposta com Um carimbo de data/hora no formato RFC3339 UTC "Zulu", com resolução de nanossegundos e até nove dígitos fracionários. Exemplos: |
Escopos de autorização
Requer um dos seguintes escopos OAuth:
-
https://www.googleapis.com/auth/datastore
-
https://www.googleapis.com/auth/cloud-platform
Para obter mais informações, consulte Visão geral da autenticação .
Consulta de agregação estruturada
Consulta do Firestore para executar uma agregação em um StructuredQuery
.
Representação JSON |
---|
{ "aggregations": [ { object ( |
Campos | |
---|---|
aggregations[] | Opcional. Série de agregações a serem aplicadas sobre os resultados do Requer:
|
Campo de união query_type . A consulta base a ser agregada. query_type pode ser apenas um dos seguintes: | |
structuredQuery | Consulta estruturada aninhada. |
Agregação
Define uma agregação que produz um único resultado.
Representação JSON |
---|
{ "alias": string, // Union field |
Campos | |
---|---|
alias | Opcional. Nome opcional do campo no qual armazenar o resultado da agregação. Se não for fornecido, o Firestore escolherá um nome padrão seguindo o formato
torna-se:
Requer:
|
operator de campo união. O tipo de agregação a ser executada, obrigatório. operator pode ser apenas um dos seguintes: | |
count | Agregador de contagem. |
sum | Agregador de soma. |
avg | Agregador médio. |
Contar
Contagem de documentos que correspondem à consulta.
A função de agregação COUNT(*)
opera em todo o documento, portanto não requer uma referência de campo.
Representação JSON |
---|
{ "upTo": string } |
Campos | |
---|---|
upTo | Opcional. Restrição opcional no número máximo de documentos a serem contados. Isso fornece uma maneira de definir um limite máximo para o número de documentos a serem digitalizados, limitando a latência e o custo. Não especificado é interpretado como sem limite. Exemplo de alto nível:
Requer:
|
Soma
Soma dos valores do campo solicitado.
Somente valores numéricos serão agregados. Todos os valores não numéricos, incluindo
NULL
são ignorados.Se os valores agregados contiverem
NaN
, retornaráNaN
. A matemática infinita segue os padrões IEEE-754.Se o conjunto de valores agregados estiver vazio, retornará 0.
Retorna um número inteiro de 64 bits se todos os números agregados forem inteiros e o resultado da soma não exceder. Caso contrário, o resultado será retornado como duplo. Observe que mesmo que todos os valores agregados sejam inteiros, o resultado será retornado como um duplo se não couber em um inteiro assinado de 64 bits. Quando isso ocorrer, o valor retornado perderá precisão.
Quando ocorre underflow, a agregação de ponto flutuante não é determinística. Isso significa que executar a mesma consulta repetidamente sem quaisquer alterações nos valores subjacentes poderá produzir resultados ligeiramente diferentes a cada vez. Nesses casos, os valores devem ser armazenados como números inteiros sobre números de ponto flutuante.
Representação JSON |
---|
{
"field": {
object ( |
Campos | |
---|---|
field | O campo no qual agregar. |
Média
Média dos valores do campo solicitado.
Somente valores numéricos serão agregados. Todos os valores não numéricos, incluindo
NULL
são ignorados.Se os valores agregados contiverem
NaN
, retornaráNaN
. A matemática infinita segue os padrões IEEE-754.Se o conjunto de valores agregados estiver vazio, retornará
NULL
.Sempre retorna o resultado como duplo.
Representação JSON |
---|
{
"field": {
object ( |
Campos | |
---|---|
field | O campo no qual agregar. |
Resultado de agregação
O resultado de um único bucket de uma consulta de agregação do Firestore.
As chaves de aggregateFields
são as mesmas para todos os resultados em uma consulta de agregação, diferentemente das consultas de documentos que podem ter campos diferentes presentes para cada resultado.
Representação JSON |
---|
{
"aggregateFields": {
string: {
object ( |
Campos | |
---|---|
aggregateFields | O resultado das funções de agregação, ex: A chave é o Um objeto que contém uma lista de pares |