Agregat
Semua fungsi agregat dapat digunakan sebagai ekspresi tingkat teratas dalam tahap
aggregate(...).
| Nama | Deskripsi |
COUNT
|
Menampilkan jumlah dokumen. |
COUNT_IF
|
Menampilkan jumlah dokumen yang ekspresinya menghasilkan nilai TRUE
|
COUNT_DISTINCT
|
Menampilkan jumlah nilai unik yang bukan NULL
|
SUM
|
Menampilkan hasil penjumlahan semua nilai NUMERIC
|
AVERAGE
|
Menampilkan rata-rata semua nilai NUMERIC
|
MINIMUM
|
Menampilkan nilai minimum yang bukan NULL
|
MAXIMUM
|
Menampilkan nilai maksimum yang bukan NULL
|
FIRST
|
Menampilkan nilai expression untuk dokumen pertama.
|
LAST
|
Menampilkan nilai expression untuk dokumen terakhir.
|
ARRAY_AGG
|
Menampilkan array dari semua nilai input. |
ARRAY_AGG_DISTINCT
|
Menampilkan array dari semua nilai input yang unik. |
COUNT
Sintaksis:
count() -> INT64
count(expression: ANY) -> INT64
Deskripsi:
Menampilkan jumlah dokumen dari tahap sebelumnya yang expression-nya
menghasilkan nilai bukan NULL. Jika tidak ada expression yang diberikan, fungsi ini
akan menampilkan jumlah total dokumen dari tahap sebelumnya.
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
Sintaksis:
count_if(expression: BOOLEAN) -> INT64
Deskripsi:
Menampilkan jumlah dokumen dari tahap sebelumnya yang expression-nya
menghasilkan nilai 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
Sintaksis:
count_distinct(expression: ANY) -> INT64
Deskripsi:
Menampilkan jumlah nilai expression unik yang bukan NULL dan bukan ABSENT.
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
Sintaksis:
sum(expression: ANY) -> NUMBER
Deskripsi:
Menampilkan hasil penjumlahan untuk semua nilai numerik, dengan mengabaikan nilai non-numerik. Menampilkan
NaN jika ada nilai yang berupa NaN.
Output akan memiliki jenis yang sama dengan jenis input terluas, kecuali dalam kasus berikut:
INTEGERakan dikonversi menjadiDOUBLEjika tidak dapat direpresentasikan sebagaiINTEGER.
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() )
RATA-RATA
Sintaksis:
average(expression: ANY) -> FLOAT64
Deskripsi:
Menampilkan rata-rata untuk semua nilai numerik, dengan mengabaikan nilai non-numerik.
Menghasilkan NaN jika ada nilai yang berupa NaN, atau menghasilkan NULL jika tidak ada nilai numerik yang
digabungkan.
Output akan memiliki jenis yang sama dengan jenis input, kecuali dalam kasus berikut:
INTEGERakan dikonversi menjadiDOUBLEjika tidak dapat direpresentasikan sebagaiINTEGER.
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
Sintaksis:
minimum(expression: ANY) -> ANY
Deskripsi:
Menampilkan nilai minimum yang bukan NULL dan tidak kosong dari expression saat dihasilkan di setiap dokumen.
Jika tidak ada nilai yang bukan NULL dan tidak kosong, NULL akan ditampilkan. Hal ini mencakup saat tidak ada dokumen yang dipertimbangkan.
Jika ada beberapa nilai minimum yang setara, salah satu nilai tersebut dapat ditampilkan. Pengurutan jenis nilai mengikuti pengurutan yang didokumentasikan.
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
Sintaksis:
maximum(expression: ANY) -> ANY
Deskripsi:
Menampilkan nilai maksimum yang bukan NULL dan tidak kosong dari expression saat dihasilkan di setiap dokumen.
Jika tidak ada nilai yang bukan NULL dan tidak kosong, NULL akan ditampilkan. Hal ini mencakup saat tidak ada dokumen yang dipertimbangkan.
Jika ada beberapa nilai maksimum yang setara, salah satu nilai tersebut dapat ditampilkan. Pengurutan jenis nilai mengikuti pengurutan yang didokumentasikan.
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
Sintaksis:
first(expression: ANY) -> ANY
Deskripsi:
Menampilkan nilai expression untuk dokumen pertama yang ditampilkan.
LAST
Sintaksis:
last(expression: ANY) -> ANY
Deskripsi:
Menampilkan nilai expression untuk dokumen terakhir yang ditampilkan.
ARRAY_AGG
Sintaksis:
array_agg(expression: ANY) -> ARRAY<ANY>
Deskripsi:
Menampilkan array yang berisi semua nilai expression saat dihasilkan di setiap dokumen.
Jika ekspresi di-resolve ke nilai kosong, nilainya akan dikonversi menjadi NULL.
Urutan elemen dalam array output tidak stabil dan sebaiknya tidak diandalkan.
ARRAY_AGG_DISTINCT
Sintaksis:
array_agg_distinct(expression: ANY) -> ARRAY<ANY>
Deskripsi:
Menampilkan array yang berisi semua nilai unik expression saat dihasilkan di setiap dokumen.
Jika ekspresi di-resolve ke nilai kosong, nilainya akan dikonversi menjadi NULL.
Urutan elemen dalam array output tidak stabil dan sebaiknya tidak diandalkan.