Aggregate
Tutte le funzioni di aggregazione possono essere utilizzate come espressioni di primo livello nella fase aggregate(...).
| Nome | Descrizione |
COUNT
|
Restituisce il numero di documenti. |
COUNT_IF
|
Restituisce il conteggio dei documenti in cui un'espressione restituisce TRUE
|
COUNT_DISTINCT
|
Restituisce il conteggio dei valori univoci e non NULL
|
SUM
|
Restituisce la somma di tutti i valori di NUMERIC
|
AVERAGE
|
Restituisce la media di tutti i valori di NUMERIC
|
MINIMUM
|
Restituisce il valore minimo diverso da NULL
|
MAXIMUM
|
Restituisce il valore massimo non NULL
|
FIRST
|
Restituisce il valore expression per il primo documento.
|
LAST
|
Restituisce il valore expression per l'ultimo documento.
|
ARRAY_AGG
|
Restituisce un array di tutti i valori di input. |
ARRAY_AGG_DISTINCT
|
Restituisce un array di tutti i valori di input distinti. |
COUNT
Sintassi:
count() -> INT64
count(expression: ANY) -> INT64
Descrizione:
Restituisce il conteggio dei documenti della fase precedente in cui expression
restituisce un valore diverso da NULL. Se non viene fornito alcun expression, restituisce il
conteggio totale dei documenti della fase precedente.
Web
// Total number of books in the collection const countOfAll = await execute(db.pipeline() .collection("books") .aggregate(countAll().as("count")) ); // Number of books with nonnull `ratings` field const countField = await execute(db.pipeline() .collection("books") .aggregate(field("ratings").count().as("count")) );
Swift
// Total number of books in the collection let countAll = try await db.pipeline() .collection("books") .aggregate([CountAll().as("count")]) .execute() // Number of books with nonnull `ratings` field let countField = try await db.pipeline() .collection("books") .aggregate([Field("ratings").count().as("count")]) .execute()
Kotlin
// Total number of books in the collection val countAll = db.pipeline() .collection("books") .aggregate(AggregateFunction.countAll().alias("count")) .execute() // Number of books with nonnull `ratings` field val countField = db.pipeline() .collection("books") .aggregate(AggregateFunction.count("ratings").alias("count")) .execute()
Java
// Total number of books in the collection Task<Pipeline.Snapshot> countAll = db.pipeline() .collection("books") .aggregate(AggregateFunction.countAll().alias("count")) .execute(); // Number of books with nonnull `ratings` field Task<Pipeline.Snapshot> countField = db.pipeline() .collection("books") .aggregate(AggregateFunction.count("ratings").alias("count")) .execute();
Python
from google.cloud.firestore_v1.pipeline_expressions import Count # Total number of books in the collection count_all = ( client.pipeline().collection("books").aggregate(Count().as_("count")).execute() ) # Number of books with nonnull `ratings` field count_field = ( client.pipeline() .collection("books") .aggregate(Count("ratings").as_("count")) .execute() )
COUNT_IF
Sintassi:
count_if(expression: BOOLEAN) -> INT64
Descrizione:
Restituisce il numero di documenti della fase precedente in cui expression
restituisce TRUE.
Web
const result = await execute(db.pipeline() .collection("books") .aggregate( field("rating").greaterThan(4).countIf().as("filteredCount") ) );
Swift
let result = try await db.pipeline() .collection("books") .aggregate([ AggregateFunction("count_if", [Field("rating").greaterThan(4)]).as("filteredCount") ]) .execute()
Kotlin
val result = db.pipeline() .collection("books") .aggregate( AggregateFunction.countIf(field("rating").greaterThan(4)).alias("filteredCount") ) .execute()
Java
Task<Pipeline.Snapshot> result = db.pipeline() .collection("books") .aggregate( AggregateFunction.countIf(field("rating").greaterThan(4)).alias("filteredCount") ) .execute();
Python
from google.cloud.firestore_v1.pipeline_expressions import Field result = ( client.pipeline() .collection("books") .aggregate(Field.of("rating").greater_than(4).count_if().as_("filteredCount")) .execute() )
COUNT_DISTINCT
Sintassi:
count_distinct(expression: ANY) -> INT64
Descrizione:
Restituisce il numero di valori univoci non NULL e non ABSENT di expression.
Web
const result = await execute(db.pipeline() .collection("books") .aggregate(field("author").countDistinct().as("unique_authors")) );
Swift
let result = try await db.pipeline() .collection("books") .aggregate([AggregateFunction("count_distinct", [Field("author")]).as("unique_authors")]) .execute()
Kotlin
val result = db.pipeline() .collection("books") .aggregate(AggregateFunction.countDistinct("author").alias("unique_authors")) .execute()
Java
Task<Pipeline.Snapshot> result = db.pipeline() .collection("books") .aggregate(AggregateFunction.countDistinct("author").alias("unique_authors")) .execute();
Python
from google.cloud.firestore_v1.pipeline_expressions import Field result = ( client.pipeline() .collection("books") .aggregate(Field.of("author").count_distinct().as_("unique_authors")) .execute() )
SUM
Sintassi:
sum(expression: ANY) -> NUMBER
Descrizione:
Restituisce la somma di tutti i valori numerici, ignorando i valori non numerici. Restituisce
NaN se uno dei valori è NaN.
L'output avrà lo stesso tipo dell'input più ampio, tranne nei seguenti casi:
- Un
INTEGERverrà convertito in unDOUBLEse non può essere rappresentato comeINTEGER.
Web
const result = await execute(db.pipeline() .collection("cities") .aggregate(field("population").sum().as("totalPopulation")) );
Swift
let result = try await db.pipeline() .collection("cities") .aggregate([Field("population").sum().as("totalPopulation")]) .execute()
Kotlin
val result = db.pipeline() .collection("cities") .aggregate(AggregateFunction.sum("population").alias("totalPopulation")) .execute()
Java
Task<Pipeline.Snapshot> result = db.pipeline() .collection("cities") .aggregate(AggregateFunction.sum("population").alias("totalPopulation")) .execute();
Python
from google.cloud.firestore_v1.pipeline_expressions import Field result = ( client.pipeline() .collection("cities") .aggregate(Field.of("population").sum().as_("totalPopulation")) .execute() )
Medio
Sintassi:
average(expression: ANY) -> FLOAT64
Descrizione:
Restituisce la media di tutti i valori numerici, ignorando i valori non numerici.
Restituisce NaN se uno dei valori è NaN o NULL se non vengono aggregati valori numerici.
L'output avrà lo stesso tipo dell'input, tranne nei seguenti casi:
- Un
INTEGERverrà convertito in unDOUBLEse non può essere rappresentato comeINTEGER.
Web
const result = await execute(db.pipeline() .collection("cities") .aggregate(field("population").average().as("averagePopulation")) );
Swift
let result = try await db.pipeline() .collection("cities") .aggregate([Field("population").average().as("averagePopulation")]) .execute()
Kotlin
val result = db.pipeline() .collection("cities") .aggregate(AggregateFunction.average("population").alias("averagePopulation")) .execute()
Java
Task<Pipeline.Snapshot> result = db.pipeline() .collection("cities") .aggregate(AggregateFunction.average("population").alias("averagePopulation")) .execute();
Python
from google.cloud.firestore_v1.pipeline_expressions import Field result = ( client.pipeline() .collection("cities") .aggregate(Field.of("population").average().as_("averagePopulation")) .execute() )
MINIMUM
Sintassi:
minimum(expression: ANY) -> ANY
Descrizione:
Restituisce il valore minimo non NULL e non assente di expression quando viene valutato su ogni documento.
Se non sono presenti valori non NULL e non assenti, viene restituito NULL. Ciò include i casi in cui non vengono presi in considerazione documenti.
Se sono presenti più valori minimi equivalenti, può essere restituito uno qualsiasi di questi valori. L'ordinamento dei tipi di valore segue l'ordinamento documentato.
Web
const result = await execute(db.pipeline() .collection("books") .aggregate(field("price").minimum().as("minimumPrice")) );
Swift
let result = try await db.pipeline() .collection("books") .aggregate([Field("price").minimum().as("minimumPrice")]) .execute()
Kotlin
val result = db.pipeline() .collection("books") .aggregate(AggregateFunction.minimum("price").alias("minimumPrice")) .execute()
Java
Task<Pipeline.Snapshot> result = db.pipeline() .collection("books") .aggregate(AggregateFunction.minimum("price").alias("minimumPrice")) .execute();
Python
from google.cloud.firestore_v1.pipeline_expressions import Field result = ( client.pipeline() .collection("books") .aggregate(Field.of("price").minimum().as_("minimumPrice")) .execute() )
MASSIMO
Sintassi:
maximum(expression: ANY) -> ANY
Descrizione:
Restituisce il valore massimo non NULL e non assente di expression quando viene valutato su ogni documento.
Se non sono presenti valori non NULL e non assenti, viene restituito NULL. Ciò include i casi in cui non vengono presi in considerazione documenti.
Se esistono più valori equivalenti massimi, può essere restituito uno qualsiasi di questi valori. L'ordinamento dei tipi di valore segue l'ordinamento documentato.
Web
const result = await execute(db.pipeline() .collection("books") .aggregate(field("price").maximum().as("maximumPrice")) );
Swift
let result = try await db.pipeline() .collection("books") .aggregate([Field("price").maximum().as("maximumPrice")]) .execute()
Kotlin
val result = db.pipeline() .collection("books") .aggregate(AggregateFunction.maximum("price").alias("maximumPrice")) .execute()
Java
Task<Pipeline.Snapshot> result = db.pipeline() .collection("books") .aggregate(AggregateFunction.maximum("price").alias("maximumPrice")) .execute();
Python
from google.cloud.firestore_v1.pipeline_expressions import Field result = ( client.pipeline() .collection("books") .aggregate(Field.of("price").maximum().as_("maximumPrice")) .execute() )
FIRST
Sintassi:
first(expression: ANY) -> ANY
Descrizione:
Restituisce il valore di expression per il primo documento restituito.
ULTIMO
Sintassi:
last(expression: ANY) -> ANY
Descrizione:
Restituisce il valore di expression per l'ultimo documento restituito.
ARRAY_AGG
Sintassi:
array_agg(expression: ANY) -> ARRAY<ANY>
Descrizione:
Restituisce un array contenente tutti i valori di expression quando viene valutato su ogni documento.
Se l'espressione viene risolta in un valore assente, viene convertita in NULL.
L'ordine degli elementi nell'array di output non è stabile e non deve essere considerato affidabile.
ARRAY_AGG_DISTINCT
Sintassi:
array_agg_distinct(expression: ANY) -> ARRAY<ANY>
Descrizione:
Restituisce un array contenente tutti i valori distinti di expression quando viene valutato su ogni documento.
Se l'espressione viene risolta in un valore assente, viene convertita in NULL.
L'ordine degli elementi nell'array di output non è stabile e non deve essere considerato affidabile.