Aggregate
Alle Aggregatfunktionen können als Ausdrücke der obersten Ebene in der aggregate(...)-Phase verwendet werden.
| Name | Beschreibung |
COUNT
|
Gibt die Anzahl der Dokumente zurück. |
COUNT_IF
|
Gibt die Anzahl der Dokumente zurück, in denen ein Ausdruck zu TRUE ausgewertet wird.
|
COUNT_DISTINCT
|
Gibt die Anzahl der eindeutigen Werte zurück, die nicht NULL sind.
|
SUM
|
Gibt die Summe aller NUMERIC-Werte zurück.
|
AVERAGE
|
Gibt den Durchschnitt aller NUMERIC-Werte zurück.
|
MINIMUM
|
Gibt den Mindestwert ungleich NULL zurück.
|
MAXIMUM
|
Gibt den maximalen Wert ungleich NULL zurück.
|
FIRST
|
Gibt den expression-Wert für das erste Dokument zurück.
|
LAST
|
Gibt den expression-Wert für das letzte Dokument zurück.
|
ARRAY_AGG
|
Gibt ein Array mit allen Eingabewerten zurück. |
ARRAY_AGG_DISTINCT
|
Gibt ein Array mit allen eindeutigen Eingabewerten zurück. |
COUNT
Syntax:
count() -> INT64
count(expression: ANY) -> INT64
Beschreibung:
Gibt die Anzahl der Dokumente aus der vorherigen Phase zurück, in denen expression als beliebiger Wert außer NULL ausgewertet wird. Wenn kein expression angegeben ist, wird die Gesamtzahl der Dokumente aus der vorherigen Phase zurückgegeben.
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
Syntax:
count_if(expression: BOOLEAN) -> INT64
Beschreibung:
Gibt die Anzahl der Dokumente aus der vorherigen Phase zurück, in denen expression als TRUE ausgewertet wird.
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
Syntax:
count_distinct(expression: ANY) -> INT64
Beschreibung:
Gibt die Anzahl der eindeutigen Nicht-NULL-, Nicht-ABSENT-Werte von expression zurück.
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
Syntax:
sum(expression: ANY) -> NUMBER
Beschreibung:
Gibt die Summe aller numerischen Werte zurück, wobei nicht numerische Werte ignoriert werden. Gibt NaN zurück, wenn einer der Werte NaN ist.
Die Ausgabe hat denselben Typ wie der breiteste Eingabetyp, außer in den folgenden Fällen:
- Ein
INTEGERwird in einDOUBLEkonvertiert, wenn es nicht alsINTEGERdargestellt werden kann.
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() )
AVERAGE
Syntax:
average(expression: ANY) -> FLOAT64
Beschreibung:
Gibt den Durchschnitt aller numerischen Werte zurück, wobei nicht numerische Werte ignoriert werden.
Wird mit NaN ausgewertet, wenn ein Wert NaN ist, oder mit NULL, wenn keine numerischen Werte aggregiert werden.
Die Ausgabe hat denselben Typ wie der Eingabetyp, außer in den folgenden Fällen:
- Ein
INTEGERwird in einDOUBLEkonvertiert, wenn es nicht alsINTEGERdargestellt werden kann.
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
Syntax:
minimum(expression: ANY) -> ANY
Beschreibung:
Gibt den Mindestwert ungleich NULL und nicht „nicht vorhanden“ von expression zurück, wenn er für jedes Dokument ausgewertet wird.
Wenn es keine Werte gibt, die nicht NULL oder nicht „absent“ sind, wird NULL zurückgegeben. Das gilt auch, wenn keine Dokumente berücksichtigt werden.
Wenn es mehrere gleichwertige Mindestwerte gibt, kann ein beliebiger dieser Werte zurückgegeben werden. Die Werttypsortierung folgt der dokumentierten Sortierung.
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
Syntax:
maximum(expression: ANY) -> ANY
Beschreibung:
Gibt den maximalen Wert ungleich NULL und nicht „nicht vorhanden“ von expression zurück, wenn er für jedes Dokument ausgewertet wird.
Wenn es keine Werte gibt, die nicht NULL oder nicht „absent“ sind, wird NULL zurückgegeben. Das gilt auch, wenn keine Dokumente berücksichtigt werden.
Wenn es mehrere maximale äquivalente Werte gibt, kann ein beliebiger dieser Werte zurückgegeben werden. Die Werttypsortierung folgt der dokumentierten Sortierung.
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
Syntax:
first(expression: ANY) -> ANY
Beschreibung:
Gibt den Wert von expression für das erste zurückgegebene Dokument zurück.
LAST
Syntax:
last(expression: ANY) -> ANY
Beschreibung:
Gibt den Wert von expression für das zuletzt zurückgegebene Dokument zurück.
ARRAY_AGG
Syntax:
array_agg(expression: ANY) -> ARRAY<ANY>
Beschreibung:
Gibt ein Array mit allen Werten von expression zurück, wenn es für jedes Dokument ausgewertet wird.
Wenn der Ausdruck in einen fehlenden Wert aufgelöst wird, wird er in NULL konvertiert.
Die Reihenfolge der Elemente im Ausgabearray ist nicht stabil und sollte nicht berücksichtigt werden.
ARRAY_AGG_DISTINCT
Syntax:
array_agg_distinct(expression: ANY) -> ARRAY<ANY>
Beschreibung:
Gibt ein Array mit allen eindeutigen Werten von expression zurück, wenn es für jedes Dokument ausgewertet wird.
Wenn der Ausdruck in einen fehlenden Wert aufgelöst wird, wird er in NULL konvertiert.
Die Reihenfolge der Elemente im Ausgabearray ist nicht stabil und sollte nicht berücksichtigt werden.