執行匯總查詢。
這個 API 不會產生類似 Firestore.RunQuery
的 Document
結果,而是允許執行匯總作業,產生一系列 AggregationResult
伺服器端。
高階範例:
-- Return the number of documents in table given a filter.
SELECT COUNT(*) FROM ( SELECT * FROM k where a = true );
HTTP 要求
POST https://firestore.googleapis.com/v1/{parent=projects/*/databases/*/documents}:runAggregationQuery
這個網址使用 gRPC 轉碼語法。
路徑參數
參數 | |
---|---|
parent |
執行個體類型,父項資源名稱。格式: |
要求主體
要求主體包含下列結構的資料:
JSON 表示法 |
---|
{ "explainOptions": { object ( |
欄位 | |
---|---|
explainOptions |
選用設定。說明查詢的選項。設定後,系統就會傳回其他查詢統計資料。否則,系統只會傳回查詢結果。 |
聯集欄位 query_type 。要執行的查詢。query_type 只能採用下列其中一種設定: |
|
structuredAggregationQuery |
匯總查詢。 |
聯集欄位 consistency_selector 。查詢的一致性模式,預設為同步一致性。consistency_selector 只能採用下列其中一種設定: |
|
transaction |
在現有交易中執行匯總。 此處的值是執行查詢的不透明交易 ID。 Base64 編碼字串。 |
newTransaction |
在查詢中開始新的交易,預設為唯讀。 系統會傳回新的交易 ID,做為串流中的第一個回應。 |
readTime |
在指定時間戳記執行查詢。 這個時間戳記須為過去 1 小時內的微秒精確度,或者如果已啟用時間點復原,也可以是過去 7 天內的整分鐘時間戳記。 RFC3339 世界標準時間「Zulu」的時間戳記格式,解析度為奈秒,且最多 9 個小數位數。範例: |
回應主體
Firestore.RunAggregationQuery
的回應。
如果成功,回應主體會含有以下結構的資料:
JSON 表示法 |
---|
{ "result": { object ( |
欄位 | |
---|---|
result |
單一匯總結果。 回報部分進度時不會顯示。 |
transaction |
依此要求啟動的交易。 只有在要求展開新交易時,才會顯示在第一個回應中。 Base64 編碼字串。 |
readTime |
計算匯總結果的時間。每次增加在這個情況下,結果串流中先前的 AggregationResult 保證在 如果查詢未傳回任何結果,系統就不會傳送包含 RFC3339 世界標準時間「Zulu」的時間戳記格式,解析度為奈秒,且最多 9 個小數位數。範例: |
explainMetrics |
查詢說明指標。只有在提供 |
授權範圍
需要下列其中一種 OAuth 範圍:
https://www.googleapis.com/auth/datastore
https://www.googleapis.com/auth/cloud-platform
詳情請參閱驗證總覽一文。
StructuredAggregationQuery
用於對 StructuredQuery
執行匯總作業的 Firestore 查詢。
JSON 表示法 |
---|
{ "aggregations": [ { object ( |
欄位 | |
---|---|
aggregations[] |
選用設定。要套用至 需求條件:
|
聯集欄位 query_type 。要匯總的基礎查詢。query_type 只能採用下列其中一種設定: |
|
structuredQuery |
巢狀結構化查詢。 |
匯總
定義會產生單一結果的匯總。
JSON 表示法 |
---|
{ "alias": string, // Union field |
欄位 | |
---|---|
alias |
選用設定。用來儲存匯總結果的欄位名稱。 如未提供,Firestore 將按照
會變成:
需求條件:
|
聯集欄位 operator 。要執行的匯總類型 (必要步驟)。operator 只能採用下列其中一種設定: |
|
count |
計數匯總器。 |
sum |
加總。 |
avg |
一般集結網站。 |
數量
符合查詢的文件數量。
COUNT(*)
匯總函式會針對整份文件進行操作,因此不需要欄位參照。
JSON 表示法 |
---|
{ "upTo": string } |
欄位 | |
---|---|
upTo |
選用設定。(選用) 限制要計算的文件數量上限。 這樣就能設定要掃描的文件數量上限、限制延遲時間和費用。 如未指定,會解譯為無界限。 高階範例:
需求條件:
|
總和
所要求欄位值的總和。
系統只會匯總數值。會略過包括
NULL
在內的所有非數字值。如果匯總值包含
NaN
,就會傳回NaN
。Infinity 數學遵循 IEEE-754 標準。如果匯總值設為空白,就會傳回 0。
如果所有匯總數字都是整數,且總和結果未溢位,則會傳回 64 位元整數。否則會以雙精度浮點數傳回結果。請注意,即使所有匯總值是整數,如果結果無法符合 64 位元帶正負號整數,就會傳回雙倍結果。發生這種情況時,傳回的值就會失去精確度。
發生欠位的情況時,浮點匯總作業不具確定性。也就是說,在不變更基礎值的情況下重複執行相同的查詢,每次結果都可能略有不同。在這種情況下,值應以整數的形式儲存在浮點數上方。
JSON 表示法 |
---|
{
"field": {
object ( |
欄位 | |
---|---|
field |
要匯總的欄位。 |
平均
所要求欄位值的平均值。
系統只會匯總數值。會略過包括
NULL
在內的所有非數字值。如果匯總值包含
NaN
,就會傳回NaN
。Infinity 數學遵循 IEEE-754 標準。如果設定的匯總值空白,則會傳回
NULL
。一律以雙精度傳回結果。
JSON 表示法 |
---|
{
"field": {
object ( |
欄位 | |
---|---|
field |
要匯總的欄位。 |
匯總結果
Firestore 匯總查詢產生的單一值區結果。
匯總查詢中所有結果的 aggregateFields
鍵都相同,這點與文件查詢不同,每項結果可有不同的欄位。
JSON 表示法 |
---|
{
"aggregateFields": {
string: {
object ( |
欄位 | |
---|---|
aggregateFields |
匯總函式的結果,例如 鍵是指派給輸入匯總函式的 包含 |