Aggregate
Toutes les fonctions d'agrégation peuvent être utilisées comme expressions de premier niveau dans l'étape aggregate(...).
| Nom | Description |
COUNT
|
Renvoie le nombre de documents. |
COUNT_IF
|
Renvoie le nombre de documents pour lesquels une expression est évaluée à TRUE.
|
COUNT_DISTINCT
|
Renvoie le nombre de valeurs uniques et non NULL.
|
SUM
|
Renvoie la somme de toutes les valeurs NUMERIC.
|
AVERAGE
|
Renvoie la moyenne de toutes les valeurs NUMERIC.
|
MINIMUM
|
Renvoie la valeur minimale non NULL.
|
MAXIMUM
|
Renvoie la valeur maximale non NULL
|
FIRST
|
Renvoie la valeur expression pour le premier document.
|
LAST
|
Renvoie la valeur expression pour le dernier document.
|
ARRAY_AGG
|
Renvoie un tableau de toutes les valeurs d'entrée. |
ARRAY_AGG_DISTINCT
|
Renvoie un tableau de toutes les valeurs d'entrée distinctes. |
COUNT
Syntaxe :
count() -> INT64
count(expression: ANY) -> INT64
Description :
Renvoie le nombre de documents de l'étape précédente où expression est évalué avec une valeur non NULL. Si aucun expression n'est fourni, renvoie le nombre total de documents de l'étape précédente.
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
Syntaxe :
count_if(expression: BOOLEAN) -> INT64
Description :
Renvoie le nombre de documents de l'étape précédente où expression est évalué à 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
Syntaxe :
count_distinct(expression: ANY) -> INT64
Description :
Renvoie le nombre de valeurs uniques non-NULL et non-ABSENT de 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
Syntaxe :
sum(expression: ANY) -> NUMBER
Description :
Renvoie la somme de toutes les valeurs numériques, en ignorant les valeurs non numériques. Renvoie NaN si l'une des valeurs est NaN.
Le résultat aura le même type que le type d'entrée le plus large, sauf dans les cas suivants :
- Un
INTEGERsera converti enDOUBLEs'il ne peut pas être représenté en tant queINTEGER.
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() )
MOYENNE
Syntaxe :
average(expression: ANY) -> FLOAT64
Description :
Renvoie la moyenne de toutes les valeurs numériques, en ignorant les valeurs non numériques.
Renvoie NaN si l'une des valeurs est NaN, ou NULL si aucune valeur numérique n'est agrégée.
Le résultat aura le même type que le type d'entrée, sauf dans les cas suivants :
- Un
INTEGERsera converti enDOUBLEs'il ne peut pas être représenté en tant queINTEGER.
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
Syntaxe :
minimum(expression: ANY) -> ANY
Description :
Renvoie la valeur minimale non-NULL et non absente de expression lorsqu'elle est évaluée sur chaque document.
S'il n'y a pas de valeurs non NULL et non absentes, NULL est renvoyé. Cela inclut le cas où aucun document n'est pris en compte.
S'il existe plusieurs valeurs équivalentes minimales, l'une d'entre elles peut être renvoyée. L'ordre des types de valeurs suit l'ordre documenté.
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() )
MAXIMUM
Syntaxe :
maximum(expression: ANY) -> ANY
Description :
Renvoie la valeur maximale non-NULL et non absente de expression lorsqu'elle est évaluée sur chaque document.
S'il n'y a pas de valeurs non NULL et non absentes, NULL est renvoyé. Cela inclut le cas où aucun document n'est pris en compte.
S'il existe plusieurs valeurs équivalentes maximales, l'une d'entre elles peut être renvoyée. L'ordre des types de valeurs suit l'ordre documenté.
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
Syntaxe :
first(expression: ANY) -> ANY
Description :
Renvoie la valeur de expression pour le premier document renvoyé.
DERNIER
Syntaxe :
last(expression: ANY) -> ANY
Description :
Renvoie la valeur de expression pour le dernier document renvoyé.
ARRAY_AGG
Syntaxe :
array_agg(expression: ANY) -> ARRAY<ANY>
Description :
Renvoie un tableau contenant toutes les valeurs de expression lorsqu'il est évalué sur chaque document.
Si l'expression renvoie une valeur absente, elle est convertie en NULL.
L'ordre des éléments dans le tableau de sortie n'est pas stable et ne doit pas être utilisé.
ARRAY_AGG_DISTINCT
Syntaxe :
array_agg_distinct(expression: ANY) -> ARRAY<ANY>
Description :
Renvoie un tableau contenant toutes les valeurs distinctes de expression lorsqu'elles sont évaluées sur chaque document.
Si l'expression renvoie une valeur absente, elle est convertie en NULL.
L'ordre des éléments dans le tableau de sortie n'est pas stable et ne doit pas être utilisé.