Package google.firestore.v1beta1

索引

Firestore

Cloud Firestore 服務。

Cloud Firestore 是快速、全代管、無伺服器且雲端原生的 NoSQL 文件資料庫,可針對全球規模的行動、網路和 IoT 應用程式簡化儲存、同步及查詢資料的程序。Cloud Firestore 的用戶端程式庫不但提供即時同步處理和離線支援,還具備安全性功能,且已與 Firebase 和 Google Cloud Platform 整合,能讓您加速建構完全無伺服器的應用程式。

BatchGetDocuments

rpc BatchGetDocuments(BatchGetDocumentsRequest) returns (BatchGetDocumentsResponse)

取得多份文件。

此方法傳回的文件不一定會按照要求的順序傳回。

授權範圍

需要下列其中一種 OAuth 範圍:

  • https://www.googleapis.com/auth/datastore
  • https://www.googleapis.com/auth/cloud-platform

詳情請參閱驗證總覽

BatchWrite

rpc BatchWrite(BatchWriteRequest) returns (BatchWriteResponse)

套用批次寫入作業。

BatchWrite 方法不會自動套用寫入作業,而且可能會按順序套用。這個方法規定每份文件只能寫入一次。每項寫入作業都會獨立成功或失敗。如要瞭解每次寫入的成功狀態,請參閱 BatchWriteResponse

如果需要一組以不可分割的形式套用的寫入作業,請改用 Commit

授權範圍

需要下列其中一種 OAuth 範圍:

  • https://www.googleapis.com/auth/datastore
  • https://www.googleapis.com/auth/cloud-platform

詳情請參閱驗證總覽

BeginTransaction

rpc BeginTransaction(BeginTransactionRequest) returns (BeginTransactionResponse)

開始新的交易。

授權範圍

需要下列其中一種 OAuth 範圍:

  • https://www.googleapis.com/auth/datastore
  • https://www.googleapis.com/auth/cloud-platform

詳情請參閱驗證總覽

修訂

rpc Commit(CommitRequest) returns (CommitResponse)

修訂交易,並視需要更新文件。

授權範圍

需要下列其中一種 OAuth 範圍:

  • https://www.googleapis.com/auth/datastore
  • https://www.googleapis.com/auth/cloud-platform

詳情請參閱驗證總覽

CreateDocument

rpc CreateDocument(CreateDocumentRequest) returns (Document)

建立新文件。

授權範圍

需要下列其中一種 OAuth 範圍:

  • https://www.googleapis.com/auth/datastore
  • https://www.googleapis.com/auth/cloud-platform

詳情請參閱驗證總覽

DeleteDocument

rpc DeleteDocument(DeleteDocumentRequest) returns (Empty)

刪除文件。

授權範圍

需要下列其中一種 OAuth 範圍:

  • https://www.googleapis.com/auth/datastore
  • https://www.googleapis.com/auth/cloud-platform

詳情請參閱驗證總覽

GetDocument

rpc GetDocument(GetDocumentRequest) returns (Document)

取得單一文件。

授權範圍

需要下列其中一種 OAuth 範圍:

  • https://www.googleapis.com/auth/datastore
  • https://www.googleapis.com/auth/cloud-platform

詳情請參閱驗證總覽

ListCollectionIds

rpc ListCollectionIds(ListCollectionIdsRequest) returns (ListCollectionIdsResponse)

列出文件下的所有集合 ID。

授權範圍

需要下列其中一種 OAuth 範圍:

  • https://www.googleapis.com/auth/datastore
  • https://www.googleapis.com/auth/cloud-platform

詳情請參閱驗證總覽

ListDocuments

rpc ListDocuments(ListDocumentsRequest) returns (ListDocumentsResponse)

列出文件。

授權範圍

需要下列其中一種 OAuth 範圍:

  • https://www.googleapis.com/auth/datastore
  • https://www.googleapis.com/auth/cloud-platform

詳情請參閱驗證總覽

聆聽

rpc Listen(ListenRequest) returns (ListenResponse)

監聽變更。此方法只能透過 gRPC 或 WebChannel (非 REST) 使用。

授權範圍

需要下列其中一種 OAuth 範圍:

  • https://www.googleapis.com/auth/datastore
  • https://www.googleapis.com/auth/cloud-platform

詳情請參閱驗證總覽

PartitionQuery

rpc PartitionQuery(PartitionQueryRequest) returns (PartitionQueryResponse)

傳回可用來平行執行查詢的分區遊標,將查詢分區。傳回的分區遊標是分割點,可由 RunQuery 使用,做為查詢結果的起點/終點。

授權範圍

需要下列其中一種 OAuth 範圍:

  • https://www.googleapis.com/auth/datastore
  • https://www.googleapis.com/auth/cloud-platform

詳情請參閱驗證總覽

復原

rpc Rollback(RollbackRequest) returns (Empty)

復原交易。

授權範圍

需要下列其中一種 OAuth 範圍:

  • https://www.googleapis.com/auth/datastore
  • https://www.googleapis.com/auth/cloud-platform

詳情請參閱驗證總覽

RunAggregationQuery

rpc RunAggregationQuery(RunAggregationQueryRequest) returns (RunAggregationQueryResponse)

執行匯總查詢。

這個 API 不會產生 Firestore.RunQuery 之類的 Document 結果,而是允許執行匯總作業,在伺服器端產生一系列 AggregationResult

高階範例:

-- Return the number of documents in table given a filter.
SELECT COUNT(*) FROM ( SELECT * FROM k where a = true );
授權範圍

需要下列其中一種 OAuth 範圍:

  • https://www.googleapis.com/auth/datastore
  • https://www.googleapis.com/auth/cloud-platform

詳情請參閱驗證總覽

RunQuery

rpc RunQuery(RunQueryRequest) returns (RunQueryResponse)

執行查詢。

授權範圍

需要下列其中一種 OAuth 範圍:

  • https://www.googleapis.com/auth/datastore
  • https://www.googleapis.com/auth/cloud-platform

詳情請參閱驗證總覽

UpdateDocument

rpc UpdateDocument(UpdateDocumentRequest) returns (Document)

更新或插入文件。

授權範圍

需要下列其中一種 OAuth 範圍:

  • https://www.googleapis.com/auth/datastore
  • https://www.googleapis.com/auth/cloud-platform

詳情請參閱驗證總覽

撰寫

rpc Write(WriteRequest) returns (WriteResponse)

系統會按照順序分批處理文件更新和刪除作業。此方法只能透過 gRPC 或 WebChannel (非 REST) 使用。

授權範圍

需要下列其中一種 OAuth 範圍:

  • https://www.googleapis.com/auth/datastore
  • https://www.googleapis.com/auth/cloud-platform

詳情請參閱驗證總覽

AggregationResult

Firestore 匯總查詢中單一值區的結果。

匯總查詢中所有結果的 aggregate_fields 金鑰都相同,這一點與在每份結果中可能會有不同欄位的文件查詢不同。

欄位
aggregate_fields

map<string, Value>

匯總函式的結果,例如:COUNT(*) AS total_docs

索引鍵是在輸入時指派給匯總函式的 alias,且這張地圖的大小等於查詢中的匯總函式數量。

ArrayValue

陣列值。

欄位
values[]

Value

陣列中的值。

BatchGetDocumentsRequest

Firestore.BatchGetDocuments 的要求。

欄位
database

string

必要欄位。資料庫名稱。請採用下列格式:projects/{project_id}/databases/{database_id}

documents[]

string

要擷取的文件名稱,請採用下列格式:projects/{project_id}/databases/{database_id}/documents/{document_path}。如果任何文件不是指定 database 的子項資源,要求就會失敗。重複的名稱會省略。

mask

DocumentMask

要傳回的欄位。如果沒有設定,系統會傳回所有欄位。

如果文件的某個欄位未列於這個遮罩中,系統不會在回應中傳回該欄位。

聯集欄位 consistency_selector。這筆交易的一致性模式。如果未設定,則預設為同步一致性。consistency_selector 只能是下列其中一項:
transaction

bytes

這個外掛程式能在交易中讀取文件。

new_transaction

TransactionOptions

開始新交易並讀取文件。預設為唯讀交易。新的交易 ID 將傳回,做為串流中的第一個回應。

read_time

Timestamp

這個外掛程式能在指定時間讀取文件。

這個值必須是過去 1 小時內的微秒精確度,如果已啟用「時間點復原」功能,則可以是過去 7 天內的整分鐘時間戳記。

BatchGetDocumentsResponse

Firestore.BatchGetDocuments 的串流回應。

欄位
transaction

bytes

在這個要求中啟動的交易。只會在第一個回應中設定,且只有在要求中設有 BatchGetDocumentsRequest.new_transaction 時才會設定。

read_time

Timestamp

讀取文件的時間。這也許只會增加一點,也就是在本例中,結果串流中的舊文件在 read_time 和此文件之間不會進行變更。

聯集欄位 result。單筆結果。如果伺服器只是傳回交易,這個值就會留空。result 只能是下列其中一項:
found

Document

要求的文件。

missing

string

已要求但不存在的文件名稱。請採用下列格式:projects/{project_id}/databases/{database_id}/documents/{document_path}

BatchWriteRequest

Firestore.BatchWrite 的要求。

欄位
database

string

必要欄位。資料庫名稱。請採用下列格式:projects/{project_id}/databases/{database_id}

writes[]

Write

要套用的寫入內容。

這個方法不會自動套用寫入作業,不保證會排序。每項寫入作業都會獨立成功或失敗。每項要求最多只能寫入同一份文件一次。

labels

map<string, string>

與這項批次寫入作業相關聯的標籤。

BatchWriteResponse

Firestore.BatchWrite 的回應。

欄位
write_results[]

WriteResult

套用寫入的結果。

這個 i-th 寫入結果對應要求中的第 i 次寫入。

status[]

Status

套用寫入的狀態。

這個 i-th 寫入狀態對應至要求中的第 i 次寫入。

BeginTransactionRequest

Firestore.BeginTransaction 的要求。

欄位
database

string

必要欄位。資料庫名稱。請採用下列格式:projects/{project_id}/databases/{database_id}

options

TransactionOptions

交易的選項。預設為讀寫交易。

BeginTransactionResponse

Firestore.BeginTransaction 的回應。

欄位
transaction

bytes

開始的交易。

BitSequence

以位元組陣列編碼的一串位元。

bitmap 位元組陣列中的每個位元組都會儲存序列的 8 位元。唯一的例外是最後一個位元組,可以儲存 8 位元「或更少」位元。padding 將要忽略的最後一個位元組位元數定義為「邊框間距」。這些「邊框間距」位元的值為未指定,必須予以忽略。

如要擷取第一個位元 (位元 0),請計算:(bitmap[0] & 0x01) != 0。如要擷取第二個位元 (位元 1),請計算:(bitmap[0] & 0x02) != 0。如要擷取第三個位元 (位元 2),請計算:(bitmap[0] & 0x04) != 0。如要擷取第四個位元 (位元 3),請計算:(bitmap[0] & 0x08) != 0。如要擷取位元 n,請計算:(bitmap[n / 8] & (0x01 << (n % 8))) != 0

BitSequence 的「大小」(其中所含的位元數) 是由以下公式計算而得:(bitmap.length * 8) - padding

欄位
bitmap

bytes

將位元序列編碼的位元組。長度可能是 0。

padding

int32

bitmap 中最後一個位元組的位元數,以做為「邊框間距」忽略。如果 bitmap 的長度為零,則這個值必須為 0。否則,這個值必須介於 0 到 7 (含) 之間。

BloomFilter

Bloom 篩選器 (https://en.wikipedia.org/wiki/Bloom_filter)

Bloom 篩選器會使用 MD5 對項目進行雜湊,並將產生的 128 位元雜湊值視為 2 個不同的 64 位元雜湊值,並使用 2 的補字編碼,將其解讀為無正負號整數。

h1h2 這兩個雜湊值隨後將用於使用公式計算 hash_count 雜湊值 (從 i=0 開始):

h(i) = h1 + (i * h2)

接著,這些結果值會對 Bloom 篩選器的位元數進行模數,以取得 Bloom 篩選器的位元以測試指定項目。

欄位
bits

BitSequence

花朵篩選器資料。

hash_count

int32

演算法使用的雜湊數量。

CommitRequest

Firestore.Commit 的要求。

欄位
database

string

必要欄位。資料庫名稱。請採用下列格式:projects/{project_id}/databases/{database_id}

writes[]

Write

要套用的寫入內容。

一律會依序執行。

transaction

bytes

如有設定,請套用並修訂這項交易中的所有寫入作業。

CommitResponse

Firestore.Commit 的回應。

欄位
write_results[]

WriteResult

套用寫入的結果。

這個 i-th 寫入結果對應要求中的第 i 次寫入。

commit_time

Timestamp

修訂版本發生的時間。只要讀取具有相同或大於 read_time 的讀取作業,就能看到修訂版本的效果。

CreateDocumentRequest

Firestore.CreateDocument 的要求。

欄位
parent

string

必要欄位。父項資源。例如 projects/{project_id}/databases/{database_id}/documentsprojects/{project_id}/databases/{database_id}/documents/chatrooms/{chatroom_id}

collection_id

string

必要欄位。要列出的集合 ID (相對於 parent)。例如:chatrooms

document_id

string

要用於這個文件的用戶端指派的文件 ID。

選用設定。如未指定,服務將會指派 ID。

document

Document

必要欄位。要建立的文件。請勿設定「name」。

mask

DocumentMask

要傳回的欄位。如果沒有設定,系統會傳回所有欄位。

如果文件的某個欄位未列於這個遮罩中,系統不會在回應中傳回該欄位。

Cursor

查詢結果集內的位置。

欄位
values[]

Value

代表位置的值,會按照查詢的子句的順序排列。

包含的值可以少於子句按照子句排序。

before

bool

如果位置早於指定值之前或之後,即相對於查詢定義的排序順序。

DeleteDocumentRequest

Firestore.DeleteDocument 的要求。

欄位
name

string

必要欄位。所刪除文件的資源名稱。請採用下列格式:projects/{project_id}/databases/{database_id}/documents/{document_path}

current_document

Precondition

文件上的選用先決條件。如果已設定此設定,但未為目標文件達成,要求就會失敗。

文件

Firestore 文件。

不得超過 1 MiB 至 4 個位元組。

欄位
name

string

文件的資源名稱,例如 projects/{project_id}/databases/{database_id}/documents/{document_path}

fields

map<string, Value>

create_time

Timestamp

僅供輸出。建立文件的時間。

刪除後重新建立文件時,這個值會單調遞增。也可以比較其他文件的值和查詢的 read_time

update_time

Timestamp

僅供輸出。文件上次變更的時間。

這個值最初設為 create_time,然後隨著文件每次變更時單調遞增。也可以比較其他文件的值和查詢的 read_time

DocumentChange

Document 已變更。

這可能是多個 writes 的結果 (包括刪除),最終為 Document 產生新的值。

如果有多個目標受到影響,同一項邏輯變更可能會傳回多則 DocumentChange 訊息。

欄位
document

Document

Document 的新狀態。

如果有設定 mask,則只會包含已更新或新增的欄位。

target_ids[]

int32

與這份文件相符的一組目標 ID。

removed_target_ids[]

int32

與此文件不再相符的目標 ID 組合。

DocumentDelete

已刪除 Document

這可能是多個 writes 的結果,包括更新,最近一次刪除 Document

如果有多個目標受到影響,同一個邏輯刪除作業可能會傳回多則 DocumentDelete 訊息。

欄位
document

string

已刪除 Document 的資源名稱。

removed_target_ids[]

int32

先前與這個實體相符的目標 ID。

read_time

Timestamp

觀察到刪除作業的讀取時間戳記。

大於或等於刪除的 commit_time

DocumentMask

文件中的一組欄位路徑。用於限製文件的 get 或更新作業,只能執行其部分欄位。這與標準欄位遮罩不同,因為這個範圍一律會限定為 Document,並且會將 Value 的動態性質納入考量。

欄位
field_paths[]

string

遮罩中的欄位路徑清單。如需欄位路徑語法參考資料,請參閱 Document.fields

DocumentRemove

Document 已從目標的檢視畫面中移除。

文件與目標不再相關且無法查看時傳送。如果伺服器無法傳送文件的新值,可將新值改為傳送至 DocumentDelete 或 DocumentChange。

如果有多個目標受到影響,系統可能會針對相同的邏輯寫入或刪除作業傳回多則 DocumentRemove 訊息。

欄位
document

string

已不在檢視畫面的 Document 資源名稱。

removed_target_ids[]

int32

先前與這份文件相符的目標 ID。

read_time

Timestamp

觀察到移除作業的讀取時間戳記。

大於或等於變更/刪除/移除的 commit_time

DocumentTransform

轉換文件。

欄位
document

string

要轉換的文件名稱。

field_transforms[]

FieldTransform

要依序套用至文件欄位的轉換清單。此屬性不得留空。

FieldTransform

轉換文件欄位。

欄位
field_path

string

欄位路徑。如需欄位路徑語法參考資料,請參閱 Document.fields

聯集欄位 transform_type。要套用至欄位的轉換。transform_type 只能是下列其中一項:
set_to_server_value

ServerValue

將欄位設為指定的伺服器值。

increment

Value

將指定值新增至欄位目前的值。

必須是整數或雙精度浮點值。如果欄位不是整數或雙精度浮點值,或是該欄位不存在,則轉換會將欄位設為指定值。如果指定值或目前的欄位值是雙精度浮點數,兩個值都會被解讀為雙精度浮點值。雙值的雙算和表示會遵循 IEEE 754 語意。如果有正整數溢位現象,欄位會解析為最大的大小正負整數/負整數。

maximum

Value

將欄位設為目前值與指定值的最大值。

必須是整數或雙精度浮點值。如果欄位不是整數或雙精度浮點值,或是該欄位不存在,則轉換會將欄位設為指定值。如果欄位和輸入值是混合型別 (也就是 1 是整數,1 是雙精度浮點數),卻套用最大運算,欄位會採用較大運算元的類型。如果運算元相等 (例如 3 和 3.0),則欄位不會變更。0、0.0 和 -0.0 都是零。零儲存值和輸入值的最大值一律為儲存值。x 和 NaN 的任何數值上限為 NaN。

minimum

Value

將欄位設為目前值和指定值的最小值。

必須是整數或雙精度浮點值。如果欄位不是整數或雙精度浮點值,或是該欄位不存在,則轉換會將欄位設為輸入值。如果欄位和輸入值是混合型別 (也就是 - 一個是整數,1 為雙精度浮點數),則欄位會採用最小運算元類型。如果運算元相等 (例如 3 和 3.0),則欄位不會變更。0、0.0 和 -0.0 都是零。零值和零輸入值的最小值一律為儲存值。x 和 NaN 的任何數值的最小值為 NaN。

append_missing_elements

ArrayValue

如果指定元素尚未出現在目前的欄位值中,請依序附加這些元素。如果欄位不是陣列,或是該欄位不存在,則會先設為空白陣列。

檢查是否缺少值時,系統會將不同類型的不同類型 (例如 3L 和 3.0) 相等。NaN 等於 NaN,而空值等於空值。如果輸入包含多個對等的值,系統只會採用第一個值。

對應的 transform_result 為空值。

remove_all_from_array

ArrayValue

從欄位的陣列中移除所有指定元素。如果欄位不是陣列,或是該欄位不存在,則會設為空白的陣列。

判斷元素是否應移除時,不同類型 (例如 3L 和 3.0) 的相等數會視為相等。NaN 等於 NaN,而空值等於空值。這會移除所有重複的值。

對應的 transform_result 為空值。

ServerValue

伺服器計算的值。

列舉
SERVER_VALUE_UNSPECIFIED 未指定。請勿使用這個值。
REQUEST_TIME 伺服器處理要求的時間 (精確度可達毫秒)。如果您在交易的多個欄位 (相同或不同的文件) 中使用,所有欄位都會獲得相同的伺服器時間戳記。

ExecutionStats

查詢的執行統計資料。

欄位
results_returned

int64

傳回的結果總數,包括文件、投影、匯總結果和鍵。

execution_duration

Duration

在後端執行查詢的總時間。

read_operations

int64

可計費讀取作業總數。

debug_stats

Struct

針對執行查詢的統計資料進行偵錯。請注意,隨著 Firestore 演進,偵錯統計資料可能會有所變動。It could include: { "indexes_entries_scanned": "1000", "documents_scanned": "20", "billing_details" : { "documents_billable": "20", "index_entries_billable": "1000", "min_query_cost": "0" } }

ExistenceFilter

符合指定目標的所有文件摘要。

欄位
target_id

int32

這個篩選器要套用的目標 ID。

count

int32

符合 target_id 的文件總數。

如果與用戶端中符合的文件數量不同,用戶端必須手動判定哪些文件不再與目標相符。

用戶端可以使用 unchanged_names Bloom 篩選器來測試「所有」文件名稱,藉此協助判斷;如果文件名稱不在篩選器中,表示文件不再與目標相符。

unchanged_names

BloomFilter

這個 Bloom 篩選器雖然名稱,但會包含「所有」符合 target_id 的文件資源名稱的 UTF-8 位元組編碼,格式為 projects/{project_id}/databases/{database_id}/documents/{document_path}

伺服器可自行斟酌是否省略這個 Bloom 篩選器,例如我們判定用戶端不會使用該篩選器,或者計算或傳輸的運算成本過高。用戶端必須改回採用這個欄位之前使用的邏輯,以便妥善處理缺少這個欄位;也就是說,在沒有履歷符記的情況下重新加入目標,以找出用戶端快取中的哪些文件不同步。

ExplainMetrics

說明查詢的指標。

欄位
plan_summary

PlanSummary

查詢的規劃階段資訊。

execution_stats

ExecutionStats

執行查詢後匯總的統計資料。只有在 ExplainOptions.analyze 設為 true 時才會顯示。

ExplainOptions

說明查詢的選項。

欄位
analyze

bool

選用設定。是否要執行這項查詢。

如果設為 False (預設值),系統會規劃查詢,讓系統只傳回規劃階段的指標。

如果為 true,將會規劃並執行查詢,並傳回完整的查詢結果,以及規劃和執行階段指標。

GetDocumentRequest

Firestore.GetDocument 的要求。

欄位
name

string

必要欄位。要取得的文件資源名稱,請採用下列格式:projects/{project_id}/databases/{database_id}/documents/{document_path}

mask

DocumentMask

要傳回的欄位。如果沒有設定,系統會傳回所有欄位。

如果文件的某個欄位未列於這個遮罩中,系統不會在回應中傳回該欄位。

聯集欄位 consistency_selector。這筆交易的一致性模式。如果未設定,則預設為同步一致性。consistency_selector 只能是下列其中一項:
transaction

bytes

在交易中讀取文件。

read_time

Timestamp

讀取指定時間的文件版本。

這個值必須是過去 1 小時內的微秒精確度,如果已啟用「時間點復原」功能,則可以是過去 7 天內的整分鐘時間戳記。

ListCollectionIdsRequest

Firestore.ListCollectionIds 的要求。

欄位
parent

string

必要欄位。父項文件。請採用下列格式:projects/{project_id}/databases/{database_id}/documents/{document_path}。例如:projects/my-project/databases/my-database/documents/chatrooms/my-chatroom

page_size

int32

要傳回的結果數上限。

page_token

string

網頁權杖。必須是來自 ListCollectionIdsResponse 的值。

聯集欄位 consistency_selector。這項要求的一致性模式。如果未設定,則預設為同步一致性。consistency_selector 只能是下列其中一項:
read_time

Timestamp

這個外掛程式能在指定時間讀取文件。

這個值必須是過去 1 小時內的微秒精確度,如果已啟用「時間點復原」功能,則可以是過去 7 天內的整分鐘時間戳記。

ListCollectionIdsResponse

Firestore.ListCollectionIds 的回應。

欄位
collection_ids[]

string

集合 ID。

next_page_token

string

可用來繼續列出清單的網頁權杖。

ListDocumentsRequest

Firestore.ListDocuments 的要求。

欄位
parent

string

必要欄位。父項資源名稱。格式為:projects/{project_id}/databases/{database_id}/documentsprojects/{project_id}/databases/{database_id}/documents/{document_path}

例如 projects/my-project/databases/my-database/documentsprojects/my-project/databases/my-database/documents/chatrooms/my-chatroom

collection_id

string

選用設定。要列出的集合 ID (相對於 parent)。

例如 chatroomsmessages

此為選用項目。如未提供,Firestore 會在提供的 parent 底下列出所有集合的文件。

page_size

int32

選用設定。單一回應中傳回的文件數量上限。

Firestore 傳回的值可能會少於這個值。

page_token

string

選用設定。接收自先前 ListDocuments 回應的網頁權杖。

提供此項目即可擷取後續網頁。進行分頁時,所有其他參數 (page_size 除外) 都必須與產生網頁權杖的要求中設定值相符。

order_by

string

選用設定。可選擇傳回文件的順序。

例如 priority desc, __name__ desc

這會反映 Firestore 查詢中使用的 ORDER BY,但以字串表示法表示。不使用時,文件會根據 __name__ ASC 排序。

mask

DocumentMask

選用設定。要傳回的欄位。如果沒有設定,系統會傳回所有欄位。

如果文件的某個欄位未列於這個遮罩中,系統不會在回應中傳回該欄位。

show_missing

bool

清單是否應顯示遺漏的文件。

文件不存在時就不見了,但下方有子文件巢狀結構。如果設為「是」,系統將傳回缺少的這類文件以及鍵,但不會設定欄位、create_timeupdate_time

含有 show_missing 的要求無法指定 whereorder_by

聯集欄位 consistency_selector。這筆交易的一致性模式。如果未設定,則預設為同步一致性。consistency_selector 只能是下列其中一項:
transaction

bytes

在既有交易中執行讀取作業。

read_time

Timestamp

在提供的時間點執行讀取作業。

這個值必須是過去 1 小時內的微秒精確度,如果已啟用「時間點復原」功能,則可以是過去 7 天內的整分鐘時間戳記。

ListDocumentsResponse

Firestore.ListDocuments 的回應。

欄位
documents[]

Document

找到的文件。

next_page_token

string

用於擷取下一頁文件的權杖。

如果省略這個欄位,就不會有後續頁面。

ListenRequest

Firestore.Listen」提出的要求

欄位
database

string

必要欄位。資料庫名稱。請採用下列格式:projects/{project_id}/databases/{database_id}

labels

map<string, string>

與這項目標變更相關聯的標籤。

聯集欄位 target_change。支援的目標有所變更。target_change 只能是下列其中一項:
add_target

Target

要新增至這個串流的目標。

remove_target

int32

要從這個串流中移除的目標 ID。

ListenResponse

Firestore.Listen 的回應。

欄位
聯集欄位 response_type。支援的回應。response_type 只能是下列其中一項:
target_change

TargetChange

目標已變更。

document_change

DocumentChange

Document 已變更。

document_delete

DocumentDelete

已刪除 Document

document_remove

DocumentRemove

Document 已從目標中移除 (因為該Document不再與該目標相關聯)。

filter

ExistenceFilter

這個篩選器會套用至先前針對指定目標傳回的文件組合。

如果文件已從指定目標中移除,但文件內容不明,系統會傳回這個值。

MapValue

對應值。

欄位
fields

map<string, Value>

地圖的欄位。

對應鍵代表欄位名稱。系統會保留與 __.*__ 規則運算式相符的欄位名稱。除了特定記錄情境外,系統不允許保留的欄位名稱。地圖金鑰 (以 UTF-8 表示) 不得超過 1,500 個位元組,且不得空白。

PartitionQueryRequest

Firestore.PartitionQuery 的要求。

欄位
parent

string

必要欄位。父項資源名稱。請採用下列格式:projects/{project_id}/databases/{database_id}/documents。系統不支援文件資源名稱,只能指定資料庫資源名稱。

partition_count

int64

所需的分區點數量上限。分區可能會在結果的多個頁面中傳回。數字必須為正數。實際傳回的分區數量可能較少。

舉例來說,這個項目可以設為少於平行查詢數量的一個,或在執行資料管道工作時,設為少於 1 個,低於可用的工作站或運算執行個體數量。

page_token

string

先前呼叫 PartitionQuery 時傳回的 next_page_token 值可用來取得另一組結果。提醒你,我們無法保證各結果組合之間的排序。因此,使用多組結果時,必須合併不同的結果集。

舉例來說,使用 page_token 進行的後續呼叫可能會傳回:

  • 遊標 B,遊標 M,遊標 Q
  • 遊標 A,遊標 U,遊標 W

如要針對提供給 PartitionQuery 的查詢結果取得完整結果集,請合併結果集:遊標 A、遊標 B、遊標 M、遊標 Q、遊標 U、遊標 W

page_size

int32

這項呼叫中要傳回的分區數量上限 (取決於 partition_count)。

舉例來說,如果 partition_count = 10 且 page_size = 8,第一次呼叫 PartitionQuery 則傳回最多 8 個分區,如果存在更多結果,則會傳回 next_page_token。第二次呼叫 PartitionQuery 最多會傳回 2 個分區,完成 partition_count 中指定的共 10 個。

聯集欄位 query_type。要分區的查詢。query_type 只能是下列其中一項:
structured_query

StructuredQuery

結構化查詢。查詢必須指定所有子系的集合,並依名稱遞增排序。不支援其他篩選器、排序依據、限制、偏移和開始/結束遊標。

聯集欄位 consistency_selector。這項要求的一致性模式。如果未設定,則預設為同步一致性。consistency_selector 只能是下列其中一項:
read_time

Timestamp

這個外掛程式能在指定時間讀取文件。

這個值必須是過去 1 小時內的微秒精確度,如果已啟用「時間點復原」功能,則可以是過去 7 天內的整分鐘時間戳記。

PartitionQueryResponse

Firestore.PartitionQuery 的回應。

欄位
partitions[]

Cursor

分區結果。每個分區都是一個分割點,可由 RunQuery 使用做為查詢結果的起點或終點。發出 RunQuery 要求時,必須使用向這個 PartitionQuery 要求提供的相同查詢。分區遊標的順序與提供給 PartitionQuery 查詢結果的順序相同。

舉例來說,如果 PartitionQuery 要求傳回分區遊標 A 和 B,執行以下三項查詢就會傳回原始查詢的整個結果集:

  • 查詢,結束於 A
  • 查詢,在 A 開始,到 B 處結束
  • 查詢,start_at B

空白結果可能表示查詢的結果太少,無法分區,或是查詢尚未支援分區。

next_page_token

string

可用來要求一組額外結果的網頁權杖,上限為 PartitionQuery 要求中 partition_count 指定的數字。如果留空,表示沒有其他結果。

PlanSummary

查詢的規劃階段資訊。

欄位
indexes_used[]

Struct

為查詢選取的索引。For example: [ {"query_scope": "Collection", "properties": "(foo ASC, name ASC)"}, {"query_scope": "Collection", "properties": "(bar ASC, name ASC)"} ]

Precondition

文件的先決條件,用於條件運算。

欄位
聯集欄位 condition_type。先決條件的類型。condition_type 只能是下列其中一項:
exists

bool

如果設為 true,則目標文件必須存在。如果設為 false,則目標文件不得存在。

update_time

Timestamp

設定時,目標文件必須存在,且在該時間已更新。時間戳記必須對齊微秒。

RollbackRequest

Firestore.Rollback 的要求。

欄位
database

string

必要欄位。資料庫名稱。請採用下列格式:projects/{project_id}/databases/{database_id}

transaction

bytes

必要欄位。要復原的交易。

RunAggregationQueryRequest

Firestore.RunAggregationQuery 的要求。

欄位
parent

string

必要欄位。父項資源名稱。格式為:projects/{project_id}/databases/{database_id}/documentsprojects/{project_id}/databases/{database_id}/documents/{document_path}。例如 projects/my-project/databases/my-database/documentsprojects/my-project/databases/my-database/documents/chatrooms/my-chatroom

explain_options

ExplainOptions

選用設定。說明查詢的選項。如果有設定,系統就會傳回額外的查詢統計資料。否則,系統只會傳回查詢結果。

聯集欄位 query_type。要執行的查詢。query_type 只能是下列其中一項:
structured_aggregation_query

StructuredAggregationQuery

匯總查詢。

聯集欄位 consistency_selector。查詢的一致性模式預設為同步一致性。consistency_selector 只能是下列其中一項:
transaction

bytes

在既有交易中執行匯總作業。

這裡的值是執行查詢的不透明交易 ID。

new_transaction

TransactionOptions

在查詢中開始新交易,預設為唯讀。

新的交易 ID 將傳回,做為串流中的第一個回應。

read_time

Timestamp

按照指定的時間戳記執行查詢。

這個值必須是過去 1 小時內的微秒精確度,如果已啟用「時間點復原」功能,則可以是過去 7 天內的整分鐘時間戳記。

RunAggregationQueryResponse

Firestore.RunAggregationQuery 的回應。

欄位
result

AggregationResult

單一匯總結果。

回報部分進度時不會顯示。

transaction

bytes

在這個要求中啟動的交易。

只有在要求展開新交易時,才會出現在第一個回應中。

read_time

Timestamp

計算匯總結果的時間。該數值一律會單調增加;在這種情況下,結果串流中先前的 AggregationResult 不保證在其 read_time 和此值之間不會有任何變化。

如果查詢未傳回任何結果,則會收到含有 read_timeresult 的回應,且這代表查詢的執行時間。

explain_metrics

ExplainMetrics

查詢說明指標。只有在提供 RunAggregationQueryRequest.explain_options 時,才會出現此屬性,且在串流中只與串流中的最後一個回應一起傳送一次。

RunQueryRequest

Firestore.RunQuery 的要求。

欄位
parent

string

必要欄位。父項資源名稱。格式為:projects/{project_id}/databases/{database_id}/documentsprojects/{project_id}/databases/{database_id}/documents/{document_path}。例如 projects/my-project/databases/my-database/documentsprojects/my-project/databases/my-database/documents/chatrooms/my-chatroom

explain_options

ExplainOptions

選用設定。說明查詢的選項。如果有設定,系統就會傳回額外的查詢統計資料。否則,系統只會傳回查詢結果。

聯集欄位 query_type。要執行的查詢。query_type 只能是下列其中一項:
structured_query

StructuredQuery

結構化查詢。

聯集欄位 consistency_selector。這筆交易的一致性模式。如果未設定,則預設為同步一致性。consistency_selector 只能是下列其中一項:
transaction

bytes

在既有交易中執行查詢。

這裡的值是執行查詢的不透明交易 ID。

new_transaction

TransactionOptions

開始新交易並讀取文件。預設為唯讀交易。新的交易 ID 將傳回,做為串流中的第一個回應。

read_time

Timestamp

這個外掛程式能在指定時間讀取文件。

這個值必須是過去 1 小時內的微秒精確度,如果已啟用「時間點復原」功能,則可以是過去 7 天內的整分鐘時間戳記。

RunQueryResponse

Firestore.RunQuery 的回應。

欄位
transaction

bytes

在這個要求中啟動的交易。只能在第一個回應中設定,且要求中必須設有 RunQueryRequest.new_transaction。如果設定,就不會在這個回應中設定任何其他欄位。

document

Document

查詢結果,回報部分進度時未設定。

read_time

Timestamp

讀取文件的時間。這可能單純增加;在這種情況下,結果串流中的舊文件在其 read_time 和此檔案之間不會進行變更。

如果查詢未傳回任何結果,則會收到含有 read_timedocument 的回應,且這代表查詢的執行時間。

skipped_results

int32

因上次回應與目前回應之間偏移而略過的結果數。

explain_metrics

ExplainMetrics

查詢說明指標。只有在提供 RunQueryRequest.explain_options 時,才會出現此屬性,且在串流中只與串流中的最後一個回應一起傳送一次。

聯集欄位 continuation_selector。查詢的接續模式。如有顯示,表示目前的查詢回應串流已完成。無論是否包含 document,都可以進行設定,但設定完畢後,系統就不會傳回其他結果。continuation_selector 只能採用下列其中一種設定:
done

bool

如果存在,Firestore 就會完成要求,不會再傳回其他文件。

StructuredAggregationQuery

用於執行 StructuredQuery 匯總的 Firestore 查詢。

欄位
aggregations[]

Aggregation

選用設定。要套用至 structured_query 結果的一系列匯總。

需求:

  • 每個查詢最少一項或最多五個匯總。
聯集欄位 query_type。要匯總的基本查詢。query_type 只能是下列其中一項:
structured_query

StructuredQuery

巢狀結構化查詢。

匯總

定義產生單一結果的匯總。

欄位
alias

string

選用設定。選填的欄位名稱,用於儲存匯總結果。

如未提供,Firestore 會按照 field_<incremental_id++> 格式選擇預設名稱。例如:

AGGREGATE
  COUNT_UP_TO(1) AS count_up_to_1,
  COUNT_UP_TO(2),
  COUNT_UP_TO(3) AS count_up_to_3,
  COUNT(*)
OVER (
  ...
);

會變成:

AGGREGATE
  COUNT_UP_TO(1) AS count_up_to_1,
  COUNT_UP_TO(2) AS field_1,
  COUNT_UP_TO(3) AS count_up_to_3,
  COUNT(*) AS field_2
OVER (
  ...
);

需求:

聯集欄位 operator。要執行的匯總類型 (必要)。operator 只能是下列其中一項:
count

Count

計數集結網站。

sum

Sum

加總資料集結網站。

avg

Avg

平均集結網站。

Avg

所要求欄位值的平均值。

  • 只會匯總數字值。系統會略過包括 NULL 在內的所有非數值。

  • 如果匯總值包含 NaN,就會傳回 NaN。Infinity 數學符合 IEEE-754 標準。

  • 如果匯總值為空白,就會傳回 NULL

  • 一律以雙精度浮點值傳回結果。

欄位
field

FieldReference

要匯總依據的欄位。

數量

符合查詢的文件數量。

COUNT(*) 匯總函式適用於整份文件,因此不需要欄位參照。

欄位
up_to

Int64Value

選用設定。視需要設定文件數量上限。

這個方式可用來設定要掃描的文件數上限,進而限制延遲時間和費用。

未指定為未繫結。

高階範例:

AGGREGATE COUNT_UP_TO(1000) OVER ( SELECT * FROM k );

需求:

  • 使用時必須大於零。

總和

要求欄位值的總和。

  • 只會匯總數字值。系統會略過包括 NULL 在內的所有非數值。

  • 如果匯總值包含 NaN,就會傳回 NaN。Infinity 數學符合 IEEE-754 標準。

  • 如果匯總值為空白,就會傳回 0。

  • 如果所有匯總數字都是整數,且總和結果未溢位,會傳回 64 位元整數。否則,結果會以雙精度浮點值傳回。請注意,即使所有匯總值都是整數,如果結果超出 64 位元帶正負號整數,系統仍會將結果傳回為雙精度浮點值。發生這種情況時,傳回的值會失去精確度。

  • 發生反向溢位時,浮點匯總不具確定性,也就是說,重複執行相同的查詢時,如果基礎值沒有變更,每次產生的結果可能略有不同。在這種情況下,值應以整數形式儲存在浮點數上。

欄位
field

FieldReference

要匯總依據的欄位。

StructuredQuery

Firestore 查詢。

查詢階段會以下列順序執行:1. 從 2. 開始,其中 3. 選取 4. order_by + start_at 5。偏移 6. 上限

欄位
select

Projection

針對要傳回的欄位 (選用) 子集合。

對查詢傳回的文件而言,這會是 DocumentMask。如未設定,系統會假設呼叫端想傳回所有欄位。

from[]

CollectionSelector

要查詢的集合。

where

Filter

要套用的篩選器。

order_by[]

Order

要套用至查詢結果的順序。

Firestore 可讓呼叫端提供完整訂購、部分訂購或完全不排序。無論在何種情況下,Firestore 都會透過下列規則保證具有穩定的排序:

  • 需要 order_by 才能參照與不等式篩選器搭配使用的所有欄位。
  • 只要是 order_by 中必須提供但目前沒有的欄位,都會按照欄位名稱的字母順序來附加。
  • 如果未指定 __name__ 的訂單,系統會預設附加該訂單。

欄位會附加與最後一個指定順序相同的排序方向,如未指定順序,則會附加「ASCENDING」。例如:

  • ORDER BY a 變為 ORDER BY a ASC, __name__ ASC
  • ORDER BY a DESC 變為 ORDER BY a DESC, __name__ DESC
  • WHERE a > 1 變為 WHERE a > 1 ORDER BY a ASC, __name__ ASC
  • WHERE __name__ > ... AND a > 1 變為 WHERE __name__ > ... AND a > 1 ORDER BY a ASC, __name__ ASC
start_at

Cursor

查詢集內位置的可能前置字串,用於查詢起始位置。

結果集的排序是以原始查詢的 ORDER BY 子句為基礎。

SELECT * FROM k WHERE a = 1 AND b > 2 ORDER BY b ASC, __name__ ASC;

此查詢的結果是依 (b ASC, __name__ ASC) 排序。

遊標可以參照完整排序或地點的前置字元,但只能參照所提供的 ORDER BY 中更多欄位。

延續上方範例,附加下列開始遊標會造成不同的影響:

  • START BEFORE (2, /k/123):在 a = 1 AND b > 2 AND __name__ > /k/123 之前開始查詢。
  • START AFTER (10):在 a = 1 AND b > 10 之後開始查詢。

OFFSET 需要掃描前 N 個結果才能略過,但開始遊標允許查詢從邏輯位置開始。此位置不需要符合實際結果,系統會從這個位置向前掃描,尋找下一份文件。

需求:

  • 值的數量不得大於 ORDER BY 子句中指定的欄位數量。
end_at

Cursor

在結果集中,為查詢結束位置的潛在前置字串。

這與 START_AT 類似,但前者是控制結束位置,而非起始位置。

需求:

  • 值的數量不得大於 ORDER BY 子句中指定的欄位數量。
offset

int32

傳回第一個結果前要略過的文件數量。

此情況會在 WHERESTART ATEND AT 指定的限制後方,但在 LIMIT 子句之前。

需求:

  • 指定的值必須大於或等於零。
limit

Int32Value

要傳回的結果數上限。

在所有限制之後套用。

需求:

  • 指定的值必須大於或等於零。
find_nearest

FindNearest

選用設定。可能的鄰近搜尋。

套用到所有其他篩選條件和排序。

尋找最接近指定查詢向量的向量嵌入。

CollectionSelector

一組集合,例如 messages as m1

欄位
collection_id

string

集合 ID。設定後,只會選取這個 ID 的集合。

all_descendants

bool

如果設為 False,則只會選取其在包含 RunQueryRequest 中指定 parent 的直系子項集合。如果為 true,則會選取所有子系集合。

CompositeFilter

使用指定運算子合併多個其他篩選器的篩選器。

欄位
op

Operator

用於合併多個篩選器的運算子。

filters[]

Filter

要合併的篩選器清單。

需求:

  • 至少有一個篩選器。

運算子

複合式篩選器運算子。

列舉
OPERATOR_UNSPECIFIED 未指定。請勿使用這個值。
AND 文件必須符合所有合併的篩選條件。
OR 文件至少須符合其中一個合併篩選條件。

方向

排序方向。

列舉
DIRECTION_UNSPECIFIED 未指明
ASCENDING 遞增。
DESCENDING 遞減。

FieldFilter

特定欄位的篩選器。

欄位
field

FieldReference

要做為篩選依據的欄位。

op

Operator

做為篩選依據的運算子。

value

Value

要比較的值。

運算子

欄位篩選器運算子。

列舉
OPERATOR_UNSPECIFIED 未指定。請勿使用這個值。
LESS_THAN

指定的 field 小於指定的 value

需求:

  • 這部field首度於 order_by推出。
LESS_THAN_OR_EQUAL

指定的 field 小於或等於指定的 value

需求:

  • 這部field首度於 order_by推出。
GREATER_THAN

指定的 field 大於指定的 value

需求:

  • 這部field首度於 order_by推出。
GREATER_THAN_OR_EQUAL

指定的 field 大於或等於指定的 value

需求:

  • 這部field首度於 order_by推出。
EQUAL 指定 field 等於指定的 value
NOT_EQUAL

指定的 field 不等於指定的 value

需求:

  • 沒有其他 NOT_EQUALNOT_INIS_NOT_NULLIS_NOT_NAN
  • 這一field率先於 order_by
ARRAY_CONTAINS 指定的 field 是包含指定 value 的陣列。
IN

指定的 field 等於指定陣列中的至少一個值。

需求:

  • value 是非空白的 ArrayValue,有輸出限制。
  • 同一項查詢中沒有任何 NOT_IN 篩選器。
ARRAY_CONTAINS_ANY

指定的 field 是包含指定陣列中任一值的陣列。

需求:

  • value 是非空白的 ArrayValue,有輸出限制。
  • 同一取假內容中沒有其他 ARRAY_CONTAINS_ANY 篩選器。
  • 同一項查詢中沒有任何 NOT_IN 篩選器。
NOT_IN

field 的值不在指定陣列中。

需求:

  • value 是非空白的 ArrayValue,最多可有 10 個值。
  • 沒有其他 ORINARRAY_CONTAINS_ANYNOT_INNOT_EQUALIS_NOT_NULLIS_NOT_NAN
  • 這一field率先於 order_by

FieldReference

文件中欄位的參照,例如:stats.operations

欄位
field_path

string

文件中欄位的參照。

需求:

  • 必須是以點分隔的字串 (.),其中每個區隔都符合 document field name 限制。

篩選器

篩選器。

欄位
聯集欄位 filter_type。篩選器類型。filter_type 只能是下列其中一項:
composite_filter

CompositeFilter

複合篩選器。

field_filter

FieldFilter

文件欄位的篩選器。

unary_filter

UnaryFilter

只接收一個引數的篩選器。

FindNearest

「臨近鄰」搜尋設定。

欄位
vector_field

FieldReference

必要欄位。要搜尋的已建立索引向量欄位。系統只能傳回維度與 query_vector 相符向量的文件。

query_vector

Value

必要欄位。系統搜尋的查詢向量。必須為大小不超過 2048 個維度的向量。

distance_measure

DistanceMeasure

必要欄位。要使用的距離量 (必要)。

limit

Int32Value

必要欄位。要傳回的最鄰近鄰點數量。必須是不超過 1000 的正整數。

DistanceMeasure

比較向量時使用的距離測量值。

列舉
DISTANCE_MEASURE_UNSPECIFIED 請勿設定。
EUCLIDEAN 可測量向量之間的 EUCLIDEAN 距離。詳情請參閱歐幾亞
COSINE 根據向量間的角度比較向量,這樣就能評估並非以向量大小為依據的相似度。建議您使用 DOT_PRODUCT 搭配單位正規化向量而非 COSINE 距離,這在數學上等同於在數學上,效能更佳。詳情請參閱餘弦相似度
DOT_PRODUCT 與餘弦相似,但會受到向量大小影響。詳情請參閱 Dot 產品

訂單

欄位上的訂單。

欄位
field

FieldReference

要排序的欄位。

direction

Direction

排序依據的方向。預設值為 ASCENDING

投影

要傳回的文件欄位投影。

欄位
fields[]

FieldReference

要傳回的欄位。

如果留空,系統會傳回所有欄位。如果只要傳回文件名稱,請使用 ['__name__']

UnaryFilter

包含單一運算元的篩選器。

欄位
op

Operator

要套用的一元運算子。

聯集欄位 operand_type。篩選器的引數。operand_type 只能是下列其中一項:
field

FieldReference

要套用運算子的欄位。

運算子

一元運算子。

列舉
OPERATOR_UNSPECIFIED 未指定。請勿使用這個值。
IS_NAN 指定 field 等於 NaN
IS_NULL 指定 field 等於 NULL
IS_NOT_NAN

指定的 field 不等於 NaN

需求:

  • 沒有其他 NOT_EQUALNOT_INIS_NOT_NULLIS_NOT_NAN
  • 這一field率先於 order_by
IS_NOT_NULL

指定的 field 不等於 NULL

需求:

  • 單一 NOT_EQUALNOT_INIS_NOT_NULLIS_NOT_NAN
  • 這一field率先於 order_by

目標

要監聽的一組文件規格,

欄位
target_id

int32

用於識別串流上目標的目標 ID。必須為正數,且非零。

如果 target_id 為 0 (或未指定),伺服器會為這個目標指派 ID,並在 TargetChange::ADD 事件中傳回該 ID。新增含有 target_id=0 的目標後,所有後續目標也必須具有 target_id=0。如果在新增含有 target_id=0 的目標後將含有 target_id != 0AddTarget 要求傳送至伺服器,伺服器會立即傳送包含 TargetChange::Remove 事件的回應。

請注意,如果用戶端傳送多個沒有 ID 的 AddTarget 要求,則 TargetChage.target_ids 中傳回 ID 的順序為未定義順序。因此,客戶應提供目標 ID,而不是仰賴伺服器指派 ID。

如果 target_id 不是零,表示這個串流現有的有效目標 ID 不得相同。

once

bool

如果目標處於最新狀態且一致,應將其移除。

expected_count

Int32Value

履歷權杖或讀取時,上次與查詢相符的文件數量。

只有在提供 resume_type 時,這個值才會生效。如果系統提供這個值,且大於零的信號,用戶端希望 ExistenceFilter.unchanged_names 包含在回應中。

聯集欄位 target_type。要監聽的目標類型。target_type 只能是下列其中一項:
query

QueryTarget

查詢指定的目標。

documents

DocumentsTarget

由一組文件名稱指定的目標。

聯集欄位 resume_type。開始聆聽的時間。

如果有指定,系統只會傳回在 resume_tokenread_time 之後已更新的相符文件。否則,系統會在任何後續變更之前,傳回所有相符的文件。resume_type 只能採用下列其中一種設定:

resume_token

bytes

先前 TargetChange 中相同目標的履歷權杖。

系統不支援採用不同目標的履歷權杖,而且可能會失敗。

read_time

Timestamp

在特定 read_time 之後開始監聽。

用戶端目前必須知道相符文件的狀態。

DocumentsTarget

由一組文件名稱指定的目標。

欄位
documents[]

string

要擷取的文件名稱,請採用下列格式:projects/{project_id}/databases/{database_id}/documents/{document_path}。如果任何文件不是指定 database 的子項資源,要求就會失敗。重複的名稱會省略。

QueryTarget

查詢指定的目標。

欄位
parent

string

父項資源名稱。格式為:projects/{project_id}/databases/{database_id}/documentsprojects/{project_id}/databases/{database_id}/documents/{document_path}。例如 projects/my-project/databases/my-database/documentsprojects/my-project/databases/my-database/documents/chatrooms/my-chatroom

聯集欄位 query_type。要執行的查詢。query_type 只能是下列其中一項:
structured_query

StructuredQuery

結構化查詢。

TargetChange

監控的目標已變更。

欄位
target_change_type

TargetChangeType

發生的變更類型。

target_ids[]

int32

已變更目標的目標 ID。

如果留空,變更會套用至所有目標。

未定義目標 ID 的順序。

cause

Status

導致這項變更的錯誤 (如適用)。

resume_token

bytes

可用來繼續執行指定 target_ids 的串流,或 target_ids 空白時所有目標的權杖。

每次目標變更時都不會設定。

read_time

Timestamp

指定 target_ids 的一致的 read_time (當 target_ids 不在一致的快照時,系統會省略)。

每當整個串流達到新的一致快照時,串流一定會傳送含有 target_ids 空白的 read_time。ADD、CURRENT 和 RESET 訊息保證 (最終) 會產生一致的快照 (但 NO_CHANGE 和 REMOVE 訊息不會)。

針對特定串流,read_time 保證為單調遞增。

TargetChangeType

變更類型。

列舉
NO_CHANGE 沒有任何變更。僅用於傳送更新後的 resume_token
ADD 已新增目標。
REMOVE 已移除目標。
CURRENT

目標會反映出在目標新增至串流之前進行的所有變更。

此動作會在 read_time 之後傳送,或是大於或等於加入目標的時間。

如果需要使用「寫入後讀取」語意,事件監聽器可等待這項變更。

RESET

目標已重設,系統會在後續變更時傳回目標的新初始狀態。

在初始狀態完成後,即使目標先前指定為 CURRENT,系統仍會傳回 CURRENT

TransactionOptions

建立新交易的選項。

欄位
聯集欄位 mode。交易的模式。mode 只能是下列其中一項:
read_only

ReadOnly

交易只能用於讀取作業。

read_write

ReadWrite

交易可用於讀取和寫入作業。

ReadOnly

只能用於讀取文件的交易選項。

欄位
聯集欄位 consistency_selector。這筆交易的一致性模式。如果未設定,則預設為同步一致性。consistency_selector 只能是下列其中一項:
read_time

Timestamp

在指定時間讀取文件。

這個值必須是過去 1 小時內的微秒精確度,如果已啟用「時間點復原」功能,則可以是過去 7 天內的整分鐘時間戳記。

ReadWrite

可用於讀取及寫入文件的交易選項。

Firestore 不允許第三方驗證要求建立讀取/寫入交易。

欄位
retry_transaction

bytes

要重試的選擇性交易。

UpdateDocumentRequest

Firestore.UpdateDocument 的要求。

欄位
document

Document

必要欄位。更新的文件。如果文件不存在,會建立文件。

update_mask

DocumentMask

要更新的欄位。遮罩中沒有任何欄位路徑可能包含保留名稱。

如果文件存在於伺服器上,且遮罩中有未參照的欄位,則文件會維持不變。遮罩中參照的欄位,但輸入文件中沒有該欄位,系統會從伺服器上的文件刪除這些欄位。

mask

DocumentMask

要傳回的欄位。如果沒有設定,系統會傳回所有欄位。

如果文件的某個欄位未列於這個遮罩中,系統不會在回應中傳回該欄位。

current_document

Precondition

文件上的選用先決條件。如果已設定此設定,但未為目標文件達成,要求就會失敗。

可容納任何支援值類型的訊息。

欄位
聯集欄位 value_type。必須設定值。value_type 只能是下列其中一項:
null_value

NullValue

空值。

boolean_value

bool

布林值。

integer_value

int64

整數值。

double_value

double

雙值。

timestamp_value

Timestamp

時間戳記值。

僅具備微秒的精確度。儲存之後,其他精確度會無條件捨去至整數。

string_value

string

字串值。

以 UTF-8 表示的字串不得超過 1 MiB 到 89 個位元組。查詢只會考量 UTF-8 表示法的前 1,500 個位元組。

bytes_value

bytes

位元組值。

不得超過 1 MiB 至 89 個位元組。查詢只會考量前 1,500 個位元組。

reference_value

string

文件的參照。例如 projects/{project_id}/databases/{database_id}/documents/{document_path}

geo_point_value

LatLng

代表地球表面上的點的地理點值。

array_value

ArrayValue

陣列值。

不能直接包含其他陣列值,但可包含包含其他陣列的地圖。

map_value

MapValue

對應值。

撰寫

在文件上寫字。

欄位
update_mask

DocumentMask

要在這項寫入作業中更新的欄位。

這個欄位只有在作業為 update 時才能設定。如果 update 未設定遮罩且文件已存在,則所有現有資料都會遭到覆寫。設定遮罩後,如果伺服器上的文件沒有遮罩涵蓋的欄位,則這些欄位將保持不變。遮罩中參照的欄位,但輸入文件中沒有該欄位,系統會從伺服器上的文件刪除這些欄位。這個遮罩中的欄位路徑不得包含保留的欄位名稱。

update_transforms[]

FieldTransform

更新後要執行的轉換。

這個欄位只有在作業為 update 時才能設定。如果存在的話,這等同於以不可分割順序對同一份文件執行 updatetransform

current_document

Precondition

文件上的選用先決條件。

如果未設定,但目標文件並未達成,寫入作業就會失敗。

聯集欄位 operation。要執行的作業。operation 只能是下列其中一項:
update

Document

要寫入的文件。

delete

string

要刪除的文件名稱。請採用下列格式:projects/{project_id}/databases/{database_id}/documents/{document_path}

transform

DocumentTransform

將轉換套用至文件。

WriteRequest

Firestore.Write 的要求。

第一個要求會建立串流,或者透過權杖繼續執行現有串流。

建立新串流時,伺服器會回覆只包含一個 ID 和符記的回應,以便在下一個要求中使用。

繼續串流時,伺服器會先串流比指定權杖以後的回應,再串流僅包含最新權杖的回應,以便在下一個要求中使用。

欄位
database

string

必要欄位。資料庫名稱。請採用下列格式:projects/{project_id}/databases/{database_id}。只有第一則訊息才需要提供這項資訊。

stream_id

string

要繼續執行的寫入串流 ID。這只會在第一則訊息中設定。如果留空,系統會建立新的寫入串流。

writes[]

Write

要套用的寫入內容。

一律會依序執行。第一個要求必須留空。最後一個要求可能會空白。其他要求一律不得留空。

stream_token

bytes

伺服器先前傳送的串流權杖。

用戶端應將這個欄位設為從收到的最新 WriteResponse 取得的權杖。這表示用戶端已收到這個權杖的回應。傳送這個權杖後,無法再使用先前的權杖。

如果發生太多未確認的回應,伺服器可能會關閉串流。

建立新的串流時,請不要設定這個欄位。如要在特定時間點繼續串流,請設定這個欄位和 stream_id 欄位。

建立新的串流時,請不要設定這個欄位。

labels

map<string, string>

與這項寫入要求相關聯的標籤。

WriteResponse

Firestore.Write 的回應。

欄位
stream_id

string

串流的 ID。只有在建立新串流時,才會設定第一則訊息。

stream_token

bytes

代表此回應在串流中位置的權杖。此時,用戶端可使用這個參數繼續串流。

系統一律會設定這個欄位。

write_results[]

WriteResult

套用寫入的結果。

這個 i-th 寫入結果對應要求中的第 i 次寫入。

commit_time

Timestamp

修訂版本發生的時間。任何具有等於或大於 read_time 的讀取作業都會保證會看到寫入的效果。

WriteResult

套用寫入的結果。

欄位
update_time

Timestamp

套用寫入後的文件上次更新時間。不會在 delete 之後設定。

如果寫入內容實際上並未變更文件,這會是先前的 update_time。

transform_results[]

Value

按相同順序套用各個 DocumentTransform.FieldTransform 的結果。