Toplama sorgusu çalıştırır.
Bu API, Firestore.RunQuery
gibi Document
sonuçları üretmek yerine, sunucu tarafında bir dizi AggregationResult
oluşturmak için toplama çalıştırmaya olanak tanır.
Üst Düzey Örnek:
-- Return the number of documents in table given a filter.
SELECT COUNT(*) FROM ( SELECT * FROM k where a = true );
HTTP isteği
POST https://firestore.googleapis.com/v1/{parent=projects/*/databases/*/documents}:runAggregationQuery
URL, gRPC Kod Dönüştürme söz dizimini kullanır.
Yol parametreleri
Parametreler | |
---|---|
parent |
Zorunlu. Üst kaynak adı. Şu biçimde: |
İstek içeriği
İstek gövdesi, aşağıdaki yapıya sahip verileri içerir:
JSON gösterimi |
---|
{ "explainOptions": { object ( |
Alanlar | |
---|---|
explainOptions |
İsteğe bağlı. Sorguyla ilgili seçenekleri açıklayın. Ayarlanırsa ek sorgu istatistikleri döndürülür. Aksi takdirde yalnızca sorgu sonuçları döndürülür. |
Birleştirme alanı query_type . Çalıştırılacak sorgu. query_type şunlardan yalnızca biri olabilir: |
|
structuredAggregationQuery |
Toplama sorgusu. |
Birleştirme alanı consistency_selector . Sorgu için tutarlılık modu, varsayılan olarak güçlü tutarlılıktır. consistency_selector şunlardan yalnızca biri olabilir: |
|
transaction |
Toplama işlemini zaten etkin olan bir işlemde çalıştırın. Buradaki değer, sorgunun yürütüleceği opak işlem kimliğidir. base64 kodlu bir dize. |
newTransaction |
Sorgunun bir parçası olarak yeni bir işlem başlatır. Bu işlem varsayılan olarak salt okunur olur. Yeni işlem kimliği, akıştaki ilk yanıt olarak döndürülür. |
readTime |
Sorguyu belirtilen zaman damgasında yürütür. Bu, son bir saat içindeki mikrosaniyelik bir hassasiyet zaman damgası olmalıdır. Belirli bir noktadan önceyi kurtarma özelliği etkinse son 7 gün içindeki bir tam dakikalık zaman damgası da olabilir. RFC3339 UTC "Zulu" zaman damgası biçiminde olmalıdır. Örnekler: |
Yanıt gövdesi
Firestore.RunAggregationQuery
için yanıt.
Başarılı olursa yanıt gövdesi aşağıdaki yapıyla birlikte verileri içerir:
JSON gösterimi |
---|
{ "result": { object ( |
Alanlar | |
---|---|
result |
Tek bir toplama sonucu. Kısmi ilerleme bildirilirken mevcut değildir. |
transaction |
Bu istek kapsamında başlatılan işlem. Yalnızca istek yeni bir işlem başlatma isteğinde bulunduğunda ilk yanıtta gösterilir. base64 kodlu bir dize. |
readTime |
Toplu sonucun hesaplandığı zaman. Bu değişim sürekli monoton bir şekilde artmaktadır. Bu durumda, sonuç akışındaki önceki AggregationResult öğesinin, Sorgu hiçbir sonuç döndürmezse RFC3339 UTC "Zulu" zaman damgası biçiminde olmalıdır. Örnekler: |
explainMetrics |
Sorgu, metrikleri açıklar. Bu mesaj yalnızca |
Yetkilendirme kapsamları
Aşağıdaki OAuth kapsamlarından birini gerektirir:
https://www.googleapis.com/auth/datastore
https://www.googleapis.com/auth/cloud-platform
Daha fazla bilgi için Kimlik Doğrulamaya Genel Bakış başlıklı makaleye bakın.
YapılandırılmışAggregationQuery
StructuredQuery
üzerinde toplama çalıştırmayla ilgili Firestore sorgusu.
JSON gösterimi |
---|
{ "aggregations": [ { object ( |
Alanlar | |
---|---|
aggregations[] |
İsteğe bağlı. Gerekenler:
|
Birleştirme alanı query_type . Toplama işlemi için temel sorgu. query_type şunlardan yalnızca biri olabilir: |
|
structuredQuery |
İç içe yerleştirilmiş yapılandırılmış sorgu. |
Toplama
Tek bir sonuç üreten bir toplamayı tanımlar.
JSON gösterimi |
---|
{ "alias": string, // Union field |
Alanlar | |
---|---|
alias |
İsteğe bağlı. Toplama sonucunun depolanacağı alanın isteğe bağlı adı. Sağlanmazsa Firestore,
şu hale gelir:
Gerekenler:
|
Birleştirme alanı operator . Gerçekleştirilecek toplama türü, zorunludur. operator şunlardan yalnızca biri olabilir: |
|
count |
Sayı toplayıcı. |
sum |
Toplam toplayıcı. |
avg |
Ortalama toplayıcı. |
Sayı
Sorguyla eşleşen dokümanların sayısı.
COUNT(*)
toplama işlevi belgenin tamamında çalıştığından alan başvurusu gerektirmez.
JSON gösterimi |
---|
{ "upTo": string } |
Alanlar | |
---|---|
upTo |
İsteğe bağlı. Sayılacak maksimum doküman sayısıyla ilgili isteğe bağlı kısıtlama. Bu, taranacak doküman sayısı için bir üst sınır ayarlamanın bir yolunu sunar, gecikmeyi ve maliyeti sınırlar. Belirtilmedi, sınır yok olarak yorumlanır. Üst Düzey Örnek:
Gerekenler:
|
Toplam
İstenen alanın değerlerinin toplamı.
Yalnızca sayısal değerler toplanır.
NULL
dahil olmak üzere sayısal olmayan tüm değerler atlanır.Toplam değerler
NaN
içeriyorsaNaN
değerini döndürür. Infinity Matematik, IEEE-754 standartlarını uygular.Toplam değer grubu boşsa 0 değerini döndürür.
Tüm toplanan sayılar tam sayıysa ve toplam sonuç taşmıyorsa 64 bitlik bir tam sayı döndürür. Aksi takdirde sonuç, çift duyarlıklı sayı olarak döndürülür. Toplam değerler tam sayı olsa bile, 64 bit imzalı tam sayıya sığmıyorsa sonucun çift değer olarak döndürüleceğini unutmayın. Bu durumda, döndürülen değer kesinlik düzeyini kaybeder.
Az akış gerçekleştiğinde, kayan nokta toplaması belirleyici değildir. Diğer bir deyişle, aynı sorguyu temel değerlerde herhangi bir değişiklik olmadan tekrar tekrar çalıştırmak her seferinde biraz farklı sonuçlar verebilir. Böyle durumlarda değerler, kayan noktalı sayılar yerine tam sayı olarak depolanmalıdır.
JSON gösterimi |
---|
{
"field": {
object ( |
Alanlar | |
---|---|
field |
Toplama işlemi için kullanılan alan. |
Ort.
İstenen alandaki değerlerin ortalaması.
Yalnızca sayısal değerler toplanır.
NULL
dahil olmak üzere sayısal olmayan tüm değerler atlanır.Toplam değerler
NaN
içeriyorsaNaN
değerini döndürür. Infinity Matematik, IEEE-754 standartlarını uygular.Toplam değer grubu boşsa
NULL
değerini döndürür.Sonucu her zaman çift duyarlıklı sayı olarak döndürür.
JSON gösterimi |
---|
{
"field": {
object ( |
Alanlar | |
---|---|
field |
Toplama işlemi için kullanılan alan. |
AggregationResult
Firestore toplama sorgusundaki tek bir paketin sonucu.
aggregateFields
anahtarları, toplama sorgusundaki tüm sonuçlar için aynıdır. Her sonuç için farklı alanlara sahip olabilen belge sorgularının aksine.
JSON gösterimi |
---|
{
"aggregateFields": {
string: {
object ( |
Alanlar | |
---|---|
aggregateFields |
Toplama işlevlerinin sonucu, ör. Anahtar, girişteki toplama işlevine atanan
|