Toplu
Tüm topla işlevleri, aggregate(...) aşamasında üst düzey ifadeler olarak kullanılabilir.
| Ad | Açıklama |
COUNT
|
Doküman sayısını döndürür. |
COUNT_IF
|
Bir ifadenin TRUE olarak değerlendirildiği dokümanların sayısını döndürür.
|
COUNT_DISTINCT
|
Benzersiz ve NULL olmayan değerlerin sayısını döndürür.
|
SUM
|
Tüm NUMERIC değerlerinin toplamını döndürür.
|
AVERAGE
|
Tüm NUMERIC değerlerinin ortalamasını döndürür.
|
MINIMUM
|
NULL olmayan minimum değeri döndürür.
|
MAXIMUM
|
NULL olmayan maksimum değeri döndürür.
|
FIRST
|
İlk doküman için expression değerini döndürür.
|
LAST
|
Son dokümanın expression değerini döndürür.
|
ARRAY_AGG
|
Tüm giriş değerlerinin dizisini döndürür. |
ARRAY_AGG_DISTINCT
|
Tüm farklı giriş değerlerinin dizisini döndürür. |
COUNT
Söz dizimi:
count() -> INT64
count(expression: ANY) -> INT64
Açıklama:
Önceki aşamada expression ifadesinin NULL dışında bir değer olarak değerlendirildiği dokümanların sayısını döndürür. expression sağlanmazsa önceki aşamadaki toplam belge sayısını döndürür.
Node.js
// Total number of books in the collection const countOfAll = await db.pipeline() .collection("books") .aggregate(countAll().as("count")) .execute(); // Number of books with nonnull `ratings` field const countField = await db.pipeline() .collection("books") .aggregate(field("ratings").count().as("count")) .execute();
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() )
Java
// Total number of books in the collection Pipeline.Snapshot countAll = firestore.pipeline().collection("books").aggregate(countAll().as("count")).execute().get(); // Number of books with nonnull `ratings` field Pipeline.Snapshot countField = firestore .pipeline() .collection("books") .aggregate(count("ratings").as("count")) .execute() .get();
Go
// Total number of books in the collection countAll, err := client.Pipeline().Collection("books"). Aggregate(firestore.Accumulators(firestore.CountAll().As("count"))). Execute(ctx).Results().GetAll() if err != nil { fmt.Fprintf(w, "GetAll failed: %v", err) return err } // Number of books with nonnull `ratings` field countField, err := client.Pipeline(). Collection("books"). Aggregate(firestore.Accumulators(firestore.Count("ratings").As("count"))). Execute(ctx).Results().GetAll() if err != nil { fmt.Fprintf(w, "GetAll failed: %v", err) return err }
COUNT_IF
Söz dizimi:
count_if(expression: BOOLEAN) -> INT64
Açıklama:
Önceki aşamada expression ifadesinin TRUE olarak değerlendirildiği doküman sayısını döndürür.
Node.js
const result = await db.pipeline() .collection("books") .aggregate( field("rating").greaterThan(4).countIf().as("filteredCount") ) .execute();
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() )
Java
Pipeline.Snapshot result = firestore .pipeline() .collection("books") .aggregate(countIf(field("rating").greaterThan(4)).as("filteredCount")) .execute() .get();
Go
snapshot := client.Pipeline(). Collection("books"). Aggregate(firestore.Accumulators( firestore.CountIf(firestore.FieldOf("rating").GreaterThan(4)).As("filteredCount"), )). Execute(ctx)
COUNT_DISTINCT
Söz dizimi:
count_distinct(expression: ANY) -> INT64
Açıklama:
expression için NULL ve ABSENT olmayan benzersiz değerlerin sayısını döndürür.
Node.js
const result = await db.pipeline() .collection("books") .aggregate(field("author").countDistinct().as("unique_authors")) .execute();
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() )
Java
Pipeline.Snapshot result = firestore .pipeline() .collection("books") .aggregate(countDistinct("author").as("unique_authors")) .execute() .get();
Go
snapshot := client.Pipeline(). Collection("books"). Aggregate(firestore.Accumulators( firestore.CountDistinct("author").As("unique_authors"), )). Execute(ctx)
SUM
Söz dizimi:
sum(expression: ANY) -> NUMBER
Açıklama:
Sayısal olmayan değerleri yok sayarak tüm sayısal değerlerin toplamını döndürür. Herhangi bir değer NaN ise NaN değerini döndürür.
Aşağıdaki durumlar dışında, çıkış en geniş giriş türüyle aynı türde olur:
INTEGERolarak temsil edilemeyen birINTEGER,DOUBLEdeğerine dönüştürülür.
Node.js
const result = await db.pipeline() .collection("cities") .aggregate(field("population").sum().as("totalPopulation")) .execute();
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() )
Java
Pipeline.Snapshot result = firestore .pipeline() .collection("cities") .aggregate(sum("population").as("totalPopulation")) .execute() .get();
Go
snapshot := client.Pipeline(). Collection("cities"). Aggregate(firestore.Accumulators( firestore.Sum("population").As("totalPopulation"), )). Execute(ctx)
ORTALAMA
Söz dizimi:
average(expression: ANY) -> FLOAT64
Açıklama:
Sayısal olmayan değerleri yok sayarak tüm sayısal değerlerin ortalamasını döndürür.
Herhangi bir değer NaN ise NaN olarak değerlendirilir veya hiçbir sayısal değer toplanmazsa NULL olarak değerlendirilir.
Çıkış, aşağıdaki durumlar dışında giriş türüyle aynı türde olur:
INTEGERolarak temsil edilemeyen birINTEGER,DOUBLEdeğerine dönüştürülür.
Node.js
const result = await db.pipeline() .collection("cities") .aggregate(field("population").average().as("averagePopulation")) .execute();
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() )
Java
Pipeline.Snapshot result = firestore .pipeline() .collection("cities") .aggregate(average("population").as("averagePopulation")) .execute() .get();
Go
snapshot := client.Pipeline(). Collection("cities"). Aggregate(firestore.Accumulators( firestore.Average("population").As("averagePopulation"), )). Execute(ctx)
MİNİMUM
Söz dizimi:
minimum(expression: ANY) -> ANY
Açıklama:
Her dokümanda değerlendirildiğinde expression değerinin NULL olmayan ve eksik olmayan minimum değerini döndürür.
NULL olmayan ve eksik olmayan değer yoksa NULL döndürülür. Hiçbir belgenin dikkate alınmadığı durumlar da buna dahildir.
Birden fazla minimum eşdeğer değer varsa bu değerlerden herhangi biri döndürülebilir. Değer türü sıralaması, belgelenmiş sıralamaya uyar.
Node.js
const result = await db.pipeline() .collection("books") .aggregate(field("price").minimum().as("minimumPrice")) .execute();
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() )
Java
Pipeline.Snapshot result = firestore .pipeline() .collection("books") .aggregate(minimum("price").as("minimumPrice")) .execute() .get();
Go
snapshot := client.Pipeline(). Collection("books"). Aggregate(firestore.Accumulators( firestore.Minimum("price").As("minimumPrice"), )). Execute(ctx)
MAKSİMUM
Söz dizimi:
maximum(expression: ANY) -> ANY
Açıklama:
Her dokümanda değerlendirildiğinde expression değerinin NULL olmayan ve eksik olmayan maksimum değerini döndürür.
NULL olmayan ve eksik olmayan değer yoksa NULL döndürülür. Hiçbir belgenin dikkate alınmadığı durumlar da buna dahildir.
Birden fazla maksimum eşdeğer değer varsa bu değerlerden herhangi biri döndürülebilir. Değer türü sıralaması, belgelenmiş sıralamaya uyar.
Node.js
const result = await db.pipeline() .collection("books") .aggregate(field("price").maximum().as("maximumPrice")) .execute();
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() )
Java
Pipeline.Snapshot result = firestore .pipeline() .collection("books") .aggregate(maximum("price").as("maximumPrice")) .execute() .get();
Go
snapshot := client.Pipeline(). Collection("books"). Aggregate(firestore.Accumulators( firestore.Maximum("price").As("maximumPrice"), )). Execute(ctx)
İLK
Söz dizimi:
first(expression: ANY) -> ANY
Açıklama:
Döndürülen ilk doküman için expression değerini döndürür.
SON
Söz dizimi:
last(expression: ANY) -> ANY
Açıklama:
Döndürülen son doküman için expression değerini döndürür.
ARRAY_AGG
Söz dizimi:
array_agg(expression: ANY) -> ARRAY<ANY>
Açıklama:
Her dokümanda değerlendirildiğinde expression öğesinin tüm değerlerini içeren bir dizi döndürür.
İfade, mevcut olmayan bir değerle sonuçlanırsa NULL değerine dönüştürülür.
Çıkış dizisindeki öğelerin sırası sabit değildir ve bu sıraya güvenilmemelidir.
ARRAY_AGG_DISTINCT
Söz dizimi:
array_agg_distinct(expression: ANY) -> ARRAY<ANY>
Açıklama:
Her dokümanda değerlendirildiğinde expression için tüm farklı değerleri içeren bir dizi döndürür.
İfade, mevcut olmayan bir değerle sonuçlanırsa NULL değerine dönüştürülür.
Çıkış dizisindeki öğelerin sırası sabit değildir ve bu sıraya güvenilmemelidir.