Package google.firestore.v1beta1

指数

火库

Cloud Firestore 服务。

Cloud Firestore 是一种快速、完全托管、无服务器、云原生 NoSQL 文档数据库,可简化全球范围内的移动、Web 和 IoT 应用程序的数据存储、同步和查询。其客户端库提供实时同步和离线支持,而其安全功能以及与 Firebase 和 Google Cloud Platform 的集成可加速构建真正的无服务器应用程序。

批量获取文档

rpc BatchGetDocuments( BatchGetDocumentsRequest ) returns ( BatchGetDocumentsResponse )

获取多个文档。

不保证此方法返回的文档按照请求的顺序返回。

授权范围

需要以下 OAuth 范围之一:

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

有关详细信息,请参阅身份验证概述

批量写入

rpc BatchWrite( BatchWriteRequest ) returns ( BatchWriteResponse )

应用一批写操作。

BatchWrite 方法不会自动应用写入操作,并且可能会无序应用它们。方法不允许每个文档写入一次以上。每次写入独立成功或失败。请参阅BatchWriteResponse以了解每次写入的成功状态。

如果您需要原子应用的一组写入,请改用Commit

授权范围

需要以下 OAuth 范围之一:

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

有关详细信息,请参阅身份验证概述

开始交易

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

有关详细信息,请参阅身份验证概述

创建文档

rpc CreateDocument( CreateDocumentRequest ) returns ( Document )

创建一个新文档。

授权范围

需要以下 OAuth 范围之一:

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

有关详细信息,请参阅身份验证概述

删除文档

rpc DeleteDocument( DeleteDocumentRequest ) returns ( Empty )

删除文档。

授权范围

需要以下 OAuth 范围之一:

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

有关详细信息,请参阅身份验证概述

获取文档

rpc GetDocument( GetDocumentRequest ) returns ( Document )

获取单个文档。

授权范围

需要以下 OAuth 范围之一:

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

有关详细信息,请参阅身份验证概述

列表集合Id

rpc ListCollectionIds( ListCollectionIdsRequest ) returns ( ListCollectionIdsResponse )

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

授权范围

需要以下 OAuth 范围之一:

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

有关详细信息,请参阅身份验证概述

列出文件

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

有关详细信息,请参阅身份验证概述

分区查询

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

有关详细信息,请参阅身份验证概述

运行聚合查询

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

有关详细信息,请参阅身份验证概述

运行查询

rpc RunQuery( RunQueryRequest ) returns ( RunQueryResponse )

运行查询。

授权范围

需要以下 OAuth 范围之一:

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

有关详细信息,请参阅身份验证概述

更新文档

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

有关详细信息,请参阅身份验证概述

聚合结果

Firestore 聚合查询的单个存储桶的结果。

对于聚合查询中的所有结果, aggregate_fields的键都是相同的,这与文档查询不同,文档查询可以为每个结果提供不同的字段。

领域
aggregate_fields

map<string, Value >

聚合函数的结果,例如: COUNT(*) AS total_docs

关键是分配给输入上的聚合函数的alias ,并且该映射的大小等于查询中聚合函数的数量。

数组值

一个数组值。

领域
values[]

Value

数组中的值。

批量获取文档请求

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

按给定时间的原样读取文档。

这必须是过去一小时内的微秒精度时间戳,或者如果启用了时间点恢复,则还可以是过去 7 天内的整分钟时间戳。

批量获取文档响应

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}

批量写入请求

Firestore.BatchWrite的请求。

领域
database

string

必需的。数据库名称。格式为: projects/{project_id}/databases/{database_id}

writes[]

Write

写入应用。

方法不以原子方式应用写入,并且不保证顺序。每次写入独立成功或失败。每个请求不能多次写入同一文档。

labels

map<string, string>

与该批次写入相关的标签。

批量写入响应

来自Firestore.BatchWrite的响应。

领域
write_results[]

WriteResult

应用写入的结果。

该第i次写入结果对应于请求中的第i次写入。

status[]

Status

应用写入的状态。

该第i个写入状态对应于请求中的第i个写入。

开始交易请求

Firestore.BeginTransaction的请求。

领域
database

string

必需的。数据库名称。格式为: projects/{project_id}/databases/{database_id}

options

TransactionOptions

交易的选项。默认为读写事务。

开始交易响应

Firestore.BeginTransaction的响应。

领域
transaction

bytes

已开始的交易。

位序列

位序列,编码在字节数组中。

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

对位序列进行编码的字节。长度可能为零。

padding

int32

bitmap中最后一个字节作为“填充”忽略的位数。如果bitmap的长度为零,则该值必须为0 。否则,该值必须介于 0 和 7 之间(包含 0 和 7)。

布隆过滤器

布隆过滤器( https://en.wikipedia.org/wiki/Bloom_filter)

布隆过滤器使用 MD5 对条目进行哈希处理,并将生成的 128 位哈希值视为 2 个不同的 64 位哈希值,并使用 2 的补码编码将其解释为无符号整数。

然后,这两个哈希值(名为h1h2 )用于使用以下公式计算hash_count哈希值:从i=0开始:

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

然后将这些结果值对布隆过滤器中的位数取模,以获得布隆过滤器的比特来测试给定条目。

领域
bits

BitSequence

布隆过滤器数据。

hash_count

int32

算法使用的哈希数。

提交请求

Firestore.Commit的请求。

领域
database

string

必需的。数据库名称。格式为: projects/{project_id}/databases/{database_id}

writes[]

Write

写入应用。

始终以原子方式按顺序执行。

transaction

bytes

如果设置,则应用此事务中的所有写入,并提交它。

提交响应

Firestore.Commit的响应。

领域
write_results[]

WriteResult

应用写入的结果。

该第i次写入结果对应于请求中的第i次写入。

commit_time

Timestamp

提交发生的时间。任何具有等于或更大read_time读取都保证能看到提交的效果。

创建文档请求

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

要返回的字段。如果未设置,则返回所有字段。

如果文档具有此掩码中不存在的字段,则该字段将不会在响应中返回。

光标

查询结果集中的位置。

领域
values[]

Value

表示位置的值,按照它们在查询的 order by 子句中出现的顺序排列。

包含的值可以少于 order by 子句中指定的值。

before

bool

如果位置位于给定值之前或之后,相对于查询定义的排序顺序。

删除文档请求

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进行比较。

文件变更

Document已更改。

可能是多次writes (包括删除)的结果,最终导致Document产生新值。

如果多个目标受到影响,则同一逻辑更改可能会返回多个DocumentChange消息。

领域
document

Document

Document的新状态。

如果设置了mask ,则仅包含已更新或添加的字段。

target_ids[]

int32

与此文档匹配的目标的一组目标 ID。

removed_target_ids[]

int32

不再与此文档匹配的目标的一组目标 ID。

文档删除

Document已被删除。

可能是多次writes的结果,包括更新,其中最后一次删除了Document

如果多个目标受到影响,则同一逻辑删除可能会返回多个DocumentDelete消息。

领域
document

string

已删除Document的资源名称。

removed_target_ids[]

int32

先前与该实体匹配的目标的一组目标 ID。

read_time

Timestamp

观察到删除的读取时间戳。

大于或等于删除的commit_time

文档掩码

文档上的一组字段路径。用于将对文档的获取或更新操作限制为其字段的子集。这与标准字段掩码不同,因为它的范围始终为Document ,并考虑到Value的动态性质。

领域
field_paths[]

string

掩码中的字段路径列表。有关字段路径语法参考,请参阅Document.fields

文档删除

Document已从目标视图中删除。

如果文档不再与目标相关并且不在视图中,则发送。如果服务器无法发送文档的新值,则可以发送而不是 DocumentDelete 或 DocumentChange。

如果多个目标受到影响,则同一逻辑写入或删除可能会返回多个DocumentRemove消息。

领域
document

string

已消失的Document的资源名称。

removed_target_ids[]

int32

先前与此文档匹配的目标的一组目标 ID。

read_time

Timestamp

观察到删除的读取时间戳。

大于或等于更改/删除/移除的commit_time

文档转换

文档的转换。

领域
document

string

要转换的文档的名称。

field_transforms[]

FieldTransform

按顺序应用于文档字段的转换列表。这不能为空。

场变换

文档字段的转换。

领域
field_path

string

田野的路径。有关字段路径语法参考,请参阅Document.fields

联合字段transform_type 。应用于现场的转变。 transform_type只能是以下之一:
set_to_server_value

ServerValue

将字段设置为给定的服务器值。

increment

Value

将给定值添加到字段的当前值。

这必须是整数或双精度值。如果该字段不是整数或双精度值,或者该字段尚不存在,则转换会将字段设置为给定值。如果给定值或当前字段值之一是双精度数,则这两个值都将被解释为双精度数。双精度算术和双精度值的表示遵循 IEEE 754 语义。如果存在正/负整数溢出,则将该字段解析为最大幅度的正/负整数。

maximum

Value

将字段设置为其当前值和给定值中的最大值。

这必须是整数或双精度值。如果该字段不是整数或双精度值,或者该字段尚不存在,则转换会将字段设置为给定值。如果在字段和输入值是混合类型(即,一个是整数,一个是双精度)的情况下应用最大运算,则字段将采用较大操作数的类型。如果操作数相等(例如3 和3.0),则该字段不会更改。 0、0.0 和 -0.0 均为零。零存储值和零输入值中的最大值始终是存储值。任何数值 x 和 NaN 中的最大值均为 NaN。

minimum

Value

将字段设置为其当前值和给定值中的最小值。

这必须是整数或双精度值。如果该字段不是整数或双精度值,或者该字段尚不存在,则转换会将字段设置为输入值。如果在字段和输入值是混合类型(即,一个是整数,一个是双精度)的情况下应用最小运算,则字段将采用较小操作数的类型。如果操作数相等(例如3 和3.0),则该字段不会更改。 0、0.0 和 -0.0 均为零。零存储值和零输入值中的最小值始终是存储值。任何数值 x 和 NaN 中的最小值均为 NaN。

append_missing_elements

ArrayValue

如果给定元素尚未出现在当前字段值中,则按顺序附加给定元素。如果该字段不是数组,或者该字段尚不存在,则首先将其设置为空数组。

在检查值是否缺失时,不同类型(例如 3L 和 3.0)的等效数字被视为相等。 NaN 等于 NaN,Null 等于 Null。如果输入包含多个等效值,则仅考虑第一个。

相应的transform_result将为空值。

remove_all_from_array

ArrayValue

从字段中的数组中删除所有给定的元素。如果该字段不是数组,或者该字段尚不存在,则将其设置为空数组。

在决定是否应删除某个元素时,不同类型的等效数字(例如 3L 和 3.0)被认为是相等的。 NaN 等于 NaN,Null 等于 Null。如果存在重复项,这将删除所有等效值。

相应的transform_result将为空值。

服务器价值

由服务器计算的值。

枚举
SERVER_VALUE_UNSPECIFIED未指定。不得使用该值。
REQUEST_TIME服务器处理请求的时间,精确到毫秒。如果在事务中的多个字段(相同或不同的文档)上使用,所有字段将获得相同的服务器时间戳。

存在过滤器

与给定目标匹配的所有文档的摘要。

领域
target_id

int32

此过滤器适用的目标 ID。

count

int32

target_id匹配的文档总数。

如果与客户端中匹配的文档计数不同,则客户端必须手动确定哪些文档不再与目标匹配。

客户端可以使用unchanged_names布隆过滤器通过根据过滤器测试所有文档名称来协助确定;如果文档名称不在过滤器中,则意味着该文档不再与目标匹配。

unchanged_names

BloomFilter

布隆过滤器,尽管其名称如此,但包含target_id匹配的所有文档的资源名称的 UTF-8 字节编码,格式projects/{project_id}/databases/{database_id}/documents/{document_path}

该布隆过滤器可以由服务器自行决定省略,例如如果认为客户端不会使用它或者如果计算或传输其计算成本太高。客户端必须通过回退到该字段存在之前使用的逻辑来优雅地处理该字段的缺失;也就是说,在没有恢复令牌的情况下重新添加目标,以找出客户端缓存中的哪些文档不同步。

获取文档请求

Firestore.GetDocument的请求。

领域
name

string

必需的。要获取的文档的资源名称。格式为: projects/{project_id}/databases/{database_id}/documents/{document_path}

mask

DocumentMask

要返回的字段。如果未设置,则返回所有字段。

如果文档具有此掩码中不存在的字段,则该字段将不会在响应中返回。

联合字段consistency_selector 。此事务的一致性模式。如果不设置,默认为强一致性。 consistency_selector只能是以下之一:
transaction

bytes

在事务中读取文档。

read_time

Timestamp

读取给定时间的文档版本。

这必须是过去一小时内的微秒精度时间戳,或者如果启用了时间点恢复,则还可以是过去 7 天内的整分钟时间戳。

列表集合Ids请求

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

按给定时间的原样读取文档。

这必须是过去一小时内的微秒精度时间戳,或者如果启用了时间点恢复,则还可以是过去 7 天内的整分钟时间戳。

列表集合Ids响应

来自Firestore.ListCollectionIds的响应。

领域
collection_ids[]

string

集合 ID。

next_page_token

string

可用于继续列表的页面令牌。

列出文件请求

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

如果列表应显示缺少的文档。

如果文档不存在,则该文档缺失,但其下面嵌套有子文档。如果为 true,则此类丢失的文档将带有键返回,但不会设置字段、 create_timeupdate_time

带有show_missing请求可能不会指定whereorder_by

联合字段consistency_selector 。此事务的一致性模式。如果不设置,默认为强一致性。 consistency_selector只能是以下之一:
transaction

bytes

将读取作为已活动事务的一部分执行。

read_time

Timestamp

在规定的时间执行读取。

这必须是过去一小时内的微秒精度时间戳,或者如果启用了时间点恢复,则还可以是过去 7 天内的整分钟时间戳。

列出文件响应

Firestore.ListDocuments的响应。

领域
documents[]

Document

找到的文件。

next_page_token

string

用于检索下一页文档的令牌。

如果省略该字段,则没有后续页面。

监听请求

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。

监听响应

Firestore.Listen的响应。

领域
联合字段response_type 。支持的回复。 response_type只能是以下之一:
target_change

TargetChange

目标已经改变。

document_change

DocumentChange

Document已更改。

document_delete

DocumentDelete

Document已被删除。

document_remove

DocumentRemove

Document已从目标中删除(因为它不再与该目标相关)。

filter

ExistenceFilter

应用于先前为给定目标返回的文档集的过滤器。

当文档可能已从给定目标中删除但确切文档未知时返回。

地图值

地图值。

领域
fields

map<string, Value >

地图的字段。

映射键代表字段名称。与正则表达式__.*__匹配的字段名称被保留。除非在某些记录的上下文中,否则禁止保留字段名称。映射键以 UTF-8 表示,不得超过 1,500 字节且不能为空。

分区查询请求

Firestore.PartitionQuery的请求。

领域
parent

string

必需的。父资源名称。格式为: projects/{project_id}/databases/{database_id}/documents 。不支持文档资源名称;只能指定数据库资源名称。

partition_count

int64

所需的最大分区点数。分区可以跨多页结果返回。该数字必须为正数。实际返回的分区数可能更少。

例如,这可以设置为比要运行的并行查询的数量少一,或者在运行数据管道作业时,设置为比可用的工作人员或计算实例的数量少一。

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

按给定时间的原样读取文档。

这必须是过去一小时内的微秒精度时间戳,或者如果启用了时间点恢复,则还可以是过去 7 天内的整分钟时间戳。

分区查询响应

Firestore.PartitionQuery的响应。

领域
partitions[]

Cursor

分区结果。每个分区都是一个分割点,RunQuery 可以将其用作查询结果的起点或终点。 RunQuery 请求必须使用提供给此 PartitionQuery 请求的相同查询发出。分区游标将按照与提供给 PartitionQuery 的查询结果相同的顺序进行排序。

例如,如果 PartitionQuery 请求返回分区游标 A 和 B,则运行以下三个查询将返回原始查询的整个结果集:

  • 查询,end_at A
  • 查询,开始于 A,结束于 B
  • 查询,开始于 B

空结果可能表示查询的结果太少而无法分区,或者查询尚不支持分区。

next_page_token

string

页面令牌,可用于请求附加结果集,最多可达 PartitionQuery 请求中的partition_count指定的数量。如果为空,则没有更多结果。

前提

文档的前提条件,用于条件操作。

领域
联合字段condition_type 。前提条件的类型。 condition_type只能是以下之一:
exists

bool

当设置为true时,目标文档必须存在。当设置为false时,目标文档必须不存在。

update_time

Timestamp

设置后,目标文档必须存在并且在当时已进行最后更新。时间戳必须是微秒对齐的。

回滚请求

Firestore.Rollback的请求。

领域
database

string

必需的。数据库名称。格式为: projects/{project_id}/databases/{database_id}

transaction

bytes

必需的。要回滚的事务。

运行聚合查询请求

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

联合字段query_type 。要运行的查询。 query_type只能是以下之一:
structured_aggregation_query

StructuredAggregationQuery

聚合查询。

联合字段consistency_selector 。查询的一致性模式,默认为强一致性。 consistency_selector只能是以下之一:
transaction

bytes

在已经处于活动状态的事务中运行聚合。

这里的值是执行查询的不透明事务 ID。

new_transaction

TransactionOptions

作为查询的一部分启动新事务,默认为只读。

新的事务 ID 将作为流中的第一个响应返回。

read_time

Timestamp

在给定时间戳执行查询。

这必须是过去一小时内的微秒精度时间戳,或者如果启用了时间点恢复,则还可以是过去 7 天内的整分钟时间戳。

运行聚合查询响应

Firestore.RunAggregationQuery的响应。

领域
result

AggregationResult

单个聚合结果。

报告部分进度时不存在。

transaction

bytes

作为此请求的一部分启动的事务。

仅当请求请求开始新事务时出现在第一个响应上。

read_time

Timestamp

计算汇总结果的时间。这总是单调递增的;在这种情况下,确保结果流中的以前的聚合result在其read_time和该流程之间不会更改。

如果查询不返回结果,则会对read_time进行响应,并且不会发送result ,这代表了运行查询的时间。

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

联合字段query_type 。要运行的查询。 query_type可以是以下一个:
structured_query

StructuredQuery

一个结构化查询。

联合字段consistency_selector 。此交易的一致性模式。如果未设置,则默认为强一致性。 consistency_selector可以是以下一个:
transaction

bytes

在已经有效的事务中运行查询。

这里的值是执行查询的不透明事务ID。

new_transaction

TransactionOptions

启动新事务并读取文档。默认为仅阅读交易。新事务ID将作为流中的第一个响应返回。

read_time

Timestamp

在给定时间读取文件。

这必须是过去一小时内的微秒精确时间戳,或者如果启用了时间点恢复,则可以在过去7天内是整个分钟时间戳。

RunqueryResponse

Firestore.RunQuery的响应。

领域
transaction

bytes

作为本请求的一部分开始的交易。只能在第一个响应中设置,并且只有在请求中设置了RunQueryRequest.new_transaction时。如果设置,则不会在此响应中设置其他字段。

document

Document

查询结果,在报告部分进度时未设置。

read_time

Timestamp

阅读文档的时间。这可能是单调的。在这种情况下,确保结果流中的先前文档在其read_time和该文档之间不更改。

如果查询返回不返回结果,则会对read_time进行响应,并且不会发送document ,这表示查询运行的时间。

skipped_results

int32

由于最后一个响应和当前响应之间的偏移,结果被跳过的结果数。

联合场continuation_selector 。查询的延续模式。如果存在,则指示当前查询响应流已经完成。可以在有或没有document的情况下设置此设置,但是设置后,将不再返回结果。 continuation_selector可能只是以下一个:
done

bool

如果存在,Firestore已经完全完成了请求,并且将不再返回文件。

构造构型

Firestore查询以在StructuredQuery上运行聚合。

领域
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

平均聚合器。

平均

请求字段的值的平均值。

  • 仅数字值将被汇总。跳过了包括NULL在内的所有非数字值。

  • 如果汇总值包含NaN ,则返回NaN 。无限数学遵循IEEE-754标准。

  • 如果集合值集为空,请返回NULL

  • 始终将结果返回为双重。

领域
field

FieldReference

集合的字段。

数数

匹配查询的文档计数。

COUNT(*)聚合函数在整个文档上运行,因此它不需要字段参考。

领域
up_to

Int64Value

选修的。可选约束要计数的最大文档数量。

这提供了一种在文档数量扫描,限制延迟和成本上设置上限的方法。

未指定的解释为无约束力。

高级示例:

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

要求:

  • 存在时必须大于零。

请求字段的值的总和。

  • 仅数字值将被汇总。跳过了包括NULL在内的所有非数字值。

  • 如果汇总值包含NaN ,则返回NaN 。无限数学遵循IEEE-754标准。

  • 如果汇总值集为空,请返回0。

  • 如果所有汇总数字都是整数,则返回一个64位整数,总和不会溢出。否则,结果将作为双重返回。请注意,即使所有汇总值都是整数,如果无法在64位签名的整数中返回结果,则结果也将以双重返回。发生这种情况时,返回的值将失去精度。

  • 当底流发生时,浮点聚集是非确定性的。这意味着反复运行相同的查询,而不会对基础值进行任何更改,每次都会产生略有不同的结果。在这种情况下,值应作为整数以浮点数为单位存储。

领域
field

FieldReference

集合的字段。

结构标语

Firestore查询。

领域
select

Projection

可选的子集返回。

这是对从查询返回的文档上的DocumentMask 。当未设置时,假设呼叫者希望返回所有字段。

from[]

CollectionSelector

查询的收藏。

where

Filter

要应用的过滤器。

order_by[]

Order

应用于查询结果的命令。

Firestore允许呼叫者提供完整的订购,部分订购或根本没有订购。在所有情况下,Firestore都可以通过以下规则保证稳定的订购:

  • order_by必须引用与不等式过滤器一起使用的所有字段。
  • order_by中所需的所有字段都尚未存在,均以字段名称的词典顺序订购。
  • 如果未指定__name__的订单,则默认情况下将其附加。

字段的附加方式与指定的最后一个订单相同,如果未指定订单,则“上升”。例如:

  • 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之后立即启动查询。

与需要在前N结果上进行扫描的OFFSET不同,启动光标允许查询从逻辑位置开始。该位置不需要匹配实际结果,它将从该位置向前扫描以找到下一个文档。

要求:

  • 值的数量不能大于ORDER BY中指定的字段数。
end_at

Cursor

结果设置的位置的潜在前缀可以结束查询。

这类似于START_AT ,但是它控制了终端位置而不是开始位置。

要求:

  • 值的数量不能大于ORDER BY中指定的字段数。
offset

int32

在返回第一个结果之前,要跳过的文档数量。

这适用于WHERESTART AT ,并在LIMIT子句之前END AT的约束之后。

要求:

  • 如果指定,该值必须大于或等于零。
limit

Int32Value

返回的最大结果数。

适用于所有其他约束。

要求:

  • 如果指定,该值必须大于或等于零。

CollectionsElector

选择集合,例如messages as m1

领域
collection_id

string

收集ID。设置时,仅选择此ID的集合。

all_descendants

bool

当false时,仅选择是包含RunQueryRequest中指定的parent的直接子女的藏书。如果是的,则选择所有后代集合。

复合式滤波器

使用给定运算符合并多个其他过滤器的过滤器。

领域
op

Operator

合并多个过滤器的操作员。

filters[]

Filter

要组合的过滤器列表。

要求:

  • 至少有一个过滤器。

操作员

复合过滤器操作员。

枚举
OPERATOR_UNSPECIFIED未指定。不得使用此值。
AND需要文档以满足所有合并过滤器。
OR需要文档以满足至少一个合并过滤器。

方向

一个方向。

枚举
DIRECTION_UNSPECIFIED未指定。
ASCENDING上升。
DESCENDING下降。

现场窗

特定字段上的过滤器。

领域
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
  • fieldorder_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是最多10个值的非空置ArrayValue
  • 没有其他OR IN ARRAY_CONTAINS_ANYNOT_INNOT_EQUALIS_NOT_NULLIS_NOT_NAN
  • fieldorder_by中首先出现。

fieldReference

对文档中的字段的引用,例如: stats.operations

领域
field_path

string

对文档中字段的引用。

要求:

  • 必须是一个点划分的( . )段的字符串,每个段都符合document field name限制。

筛选

一个过滤器。

领域
联合字段filter_type 。过滤器的类型。 filter_type可能只是以下一个:
composite_filter

CompositeFilter

复合滤波器。

field_filter

FieldFilter

文档字段上的过滤器。

unary_filter

UnaryFilter

一个完全参数的过滤器。

命令

字段上的订单。

领域
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
  • fieldorder_by中首先出现。
IS_NOT_NULL

给定的field不等于NULL

要求:

  • 一个NOT_EQUALNOT_INIS_NOT_NULLIS_NOT_NAN
  • fieldorder_by中首先出现。

目标

一组要收听的文档的规范。

领域
target_id

int32

标识流上目标的目标ID。必须是正数,非零。

如果target_id为0(或未指定),则服务器将为此目标分配ID,并在TargetChange::ADD事件中返回该ID。一旦添加了target_id=0的目标,所有后续目标也必须具有target_id=0 。如果添加了带有target_id=0目标后,带有target_id != 0 AddTarget请求将发送到服务器,则服务器将立即发送带有TargetChange::Remove evert的响应。

请注意,如果客户端在没有ID的情况下发送多个AddTarget请求,则在TargetChage.target_ids中返回的ID订单。Target_ids不确定。因此,客户端应提供目标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

一个结构化查询。

目标汇率

观看的目标发生了变化。

领域
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 (当目标_ids不在一致的快照时省略)。

每当整个流到达新的一致快照时,该流可以将target_ids空的read_time发送。添加,当前和重置消息可确保(最终)导致新的一致快照(而不是change和删除消息不是)。

对于给定的流, read_time可以单调地增加。

TargetChangeType

更改的类型。

枚举
NO_CHANGE没有发生变化。仅用于发送更新的resume_token
ADD添加了目标。
REMOVE目标已删除。
CURRENT

目标反映了在目标添加到流中之前所做的所有更改。

这将在read_time之后或与添加目标的时间大或等于读取时间之后发送。

如果需要阅读后的语义,听众可以等待此更改。

RESET

目标已经重置,并且目标将在随后的更改中返回。

初始状态完成后,即使先前指出的目标是CURRENT的, CURRENT将返回。

交易

创建新事务的选项。

领域
联合现场mode 。交易模式。 mode只能是以下一个:
read_only

ReadOnly

该交易只能用于读取操作。

read_write

ReadWrite

该交易可用于读写操作。

只读

交易的选项,只能用于读取文档。

领域
联合字段consistency_selector 。此交易的一致性模式。如果未设置,则默认为强一致性。 consistency_selector可以是以下一个:
read_time

Timestamp

在给定时间读取文档。

这必须是过去一小时内的微秒精确时间戳,或者如果启用了时间点恢复,则可以在过去7天内是整个分钟时间戳。

读写

可用于读写文档的交易的选项。

Firestore不允许第三方Auth请求创建读写。交易。

领域
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时,才可以设置此字段。如果存在,则本文等效于执行update并根据原子和顺序transform为同一文档。

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>

与此写入请求关联的标签。

作家

Firestore.Write的响应。

领域
stream_id

string

流的ID。仅在创建新的流时就设置在第一条消息上。

stream_token

bytes

代表此响应在流中的位置的令牌。此时,客户可以使用这来恢复流。

该字段始终设置。

write_results[]

WriteResult

应用写作的结果。

第i-th写入结果对应于在请求中写的第i-th。

commit_time

Timestamp

提交发生的时间。任何具有相等或更大read_time读取的读物都可以保证看到写的效果。

作家

应用写作的结果。

领域
update_time

Timestamp

应用写入后的最后更新时间。 delete后未设置。

如果写入实际上没有更改文档,则将是上一个update_time。

transform_results[]

Value

按照相同的顺序应用每个DocumentTransform.FieldTransform的结果。