Esegue una query di aggregazione.
Anziché produrre risultati Document
come Firestore.RunQuery
, questa API consente di eseguire un'aggregazione per produrre una serie di AggregationResult
lato server.
Esempio generale:
-- Return the number of documents in table given a filter.
SELECT COUNT(*) FROM ( SELECT * FROM k where a = true );
Richiesta HTTP
POST https://firestore.googleapis.com/v1beta1/{parent=projects/*/databases/*/documents}:runAggregationQuery
L'URL utilizza la sintassi di transcodifica gRPC.
Parametri del percorso
Parametri | |
---|---|
parent |
obbligatorio. Il nome della risorsa padre. Nel formato: |
Corpo della richiesta
Il corpo della richiesta contiene dati con la seguente struttura:
Rappresentazione JSON |
---|
{ "explainOptions": { object ( |
Campi | |
---|---|
explainOptions |
Campo facoltativo. Spiega le opzioni della query. Se impostato, verranno restituite ulteriori statistiche sulle query. In caso contrario, verranno restituiti solo i risultati della query. |
Campo di unione query_type . La query da eseguire. query_type può essere solo uno dei seguenti: |
|
structuredAggregationQuery |
Una query di aggregazione. |
Campo di unione consistency_selector . La modalità di coerenza per la query è impostata in modo predefinito su elevata coerenza. consistency_selector può essere solo uno dei seguenti: |
|
transaction |
Eseguire l'aggregazione in una transazione già attiva. Il valore qui è l'ID transazione opaco in cui eseguire la query. Una stringa con codifica Base64. |
newTransaction |
Avvia una nuova transazione come parte della query. L'impostazione predefinita è di sola lettura. Il nuovo ID transazione verrà restituito come prima risposta nel flusso. |
readTime |
Esegue la query al timestamp specificato. Deve essere un timestamp con precisione in microsecondi risalente all'ultima ora oppure, se il recupero point-in-time è abilitato, può essere anche un timestamp di un minuto intero compreso negli ultimi 7 giorni. Un timestamp in formato "Zulu" RFC3339 UTC, con risoluzione in nanosecondi e fino a nove cifre frazionarie. Esempi: |
Corpo della risposta
La risposta per Firestore.RunAggregationQuery
.
In caso di esito positivo, il corpo della risposta contiene dati con la seguente struttura:
Rappresentazione JSON |
---|
{ "result": { object ( |
Campi | |
---|---|
result |
Un singolo risultato dell'aggregazione. Non presente quando segnali l'avanzamento parziale. |
transaction |
La transazione avviata nell'ambito di questa richiesta. Presente solo nella prima risposta quando la richiesta ha richiesto di avviare una nuova transazione. Una stringa con codifica Base64. |
readTime |
L'ora in cui è stato calcolato il risultato aggregato. Questo valore aumenta sempre in modo monotonico; in questo caso, i valori di AggregationResult precedente nel flusso di risultati sono garantiti che non siano cambiati tra l'elemento Se la query non restituisce risultati, verrà inviata una risposta con Un timestamp in formato "Zulu" RFC3339 UTC, con risoluzione in nanosecondi e fino a nove cifre frazionarie. Esempi: |
explainMetrics |
La query spiega le metriche. È presente solo quando viene fornito il |
Ambiti di autorizzazione
Richiede uno dei seguenti ambiti OAuth:
https://www.googleapis.com/auth/datastore
https://www.googleapis.com/auth/cloud-platform
Per ulteriori informazioni, consulta la Panoramica dell'autenticazione.
StructuredAggregationQuery
Query Firestore per eseguire un'aggregazione su un StructuredQuery
.
Rappresentazione JSON |
---|
{ "aggregations": [ { object ( |
Campi | |
---|---|
aggregations[] |
Campo facoltativo. Serie di aggregazioni da applicare ai risultati di Richiede:
|
Campo di unione query_type . La query di base da aggregare. query_type può essere solo uno dei seguenti: |
|
structuredQuery |
Query strutturata nidificata. |
Aggregazione
Definisce un'aggregazione che produce un singolo risultato.
Rappresentazione JSON |
---|
{ "alias": string, // Union field |
Campi | |
---|---|
alias |
Campo facoltativo. Nome facoltativo del campo in cui archiviare il risultato dell'aggregazione. Se non viene specificato, Firestore sceglierà un nome predefinito nel formato
diventa:
Richiede:
|
Campo di unione operator . Il tipo di aggregazione da eseguire, obbligatorio. operator può essere solo uno dei seguenti: |
|
count |
Conteggio aggregatore. |
sum |
Somma aggregatore. |
avg |
Aggregatore medio. |
Conteggio
Numero di documenti che corrispondono alla query.
La funzione di aggregazione COUNT(*)
opera sull'intero documento, quindi non richiede un riferimento di campo.
Rappresentazione JSON |
---|
{ "upTo": string } |
Campi | |
---|---|
upTo |
Campo facoltativo. Vincolo facoltativo al numero massimo di documenti da conteggiare. Ciò fornisce un modo per impostare un limite superiore per il numero di documenti da scansionare, limitando la latenza e il costo. Un valore non specificato viene interpretato come nessun limite. Esempio generale:
Richiede:
|
Somma
Somma dei valori del campo richiesto.
Verranno aggregati solo valori numerici. Tutti i valori non numerici, incluso
NULL
, vengono ignorati.Se i valori aggregati contengono
NaN
, restituisceNaN
. I calcoli matematici Infinity seguono gli standard IEEE-754.Se il set di valori aggregati è vuoto, restituisce 0.
Restituisce un numero intero a 64 bit se tutti i numeri aggregati sono numeri interi e il risultato della somma non ha un overflow. In caso contrario, il risultato viene restituito come doppio. Tieni presente che anche se tutti i valori aggregati sono numeri interi, il risultato viene restituito come doppio se non può rientrare in un valore Integer a 64 bit con segno. In questo caso, il valore restituito perderà precisione.
Quando si verifica un underflow, l'aggregazione in virgola mobile non è deterministica. Ciò significa che l'esecuzione della stessa query più volte senza modifiche ai valori sottostanti potrebbe produrre risultati leggermente diversi ogni volta. In questi casi, i valori devono essere archiviati come numeri interi anziché in virgola mobile.
Rappresentazione JSON |
---|
{
"field": {
object ( |
Campi | |
---|---|
field |
Il campo in base al quale aggregare. |
Med
Media dei valori del campo richiesto.
Verranno aggregati solo valori numerici. Tutti i valori non numerici, incluso
NULL
, vengono ignorati.Se i valori aggregati contengono
NaN
, restituisceNaN
. I calcoli matematici Infinity seguono gli standard IEEE-754.Se il set di valori aggregati è vuoto, restituisce
NULL
.Restituisce sempre il risultato come doppio.
Rappresentazione JSON |
---|
{
"field": {
object ( |
Campi | |
---|---|
field |
Il campo in base al quale aggregare. |
AggregationResult
Il risultato di un singolo bucket da una query di aggregazione Firestore.
Le chiavi di aggregateFields
sono le stesse per tutti i risultati in una query di aggregazione, a differenza delle query sui documenti che possono avere campi diversi per ogni risultato.
Rappresentazione JSON |
---|
{
"aggregateFields": {
string: {
object ( |
Campi | |
---|---|
aggregateFields |
Il risultato delle funzioni di aggregazione, ad esempio La chiave è la chiave Un oggetto contenente un elenco di |