Write

文档上的写入操作。

JSON 表示法
{
  "updateMask": {
    object (DocumentMask)
  },
  "updateTransforms": [
    {
      object (FieldTransform)
    }
  ],
  "currentDocument": {
    object (Precondition)
  },

  // Union field operation can be only one of the following:
  "update": {
    object (Document)
  },
  "delete": string,
  "transform": {
    object (DocumentTransform)
  }
  // End of list of possible types for union field operation.
}
字段
updateMask

object (DocumentMask)

此写入操作中要更新的字段。

只有在操作为 update 时才能设置此字段。如果没有为 update 设置掩码,而文档存在,则所有现有数据都将被覆盖。如果设置了掩码,且服务器上的文档包含未遮盖的字段,则这些字段保持不变。在掩码中引用,但在输入文档中不存在的字段会从服务器上的文档中删除。此掩码中的字段路径不得包含预留的字段名称。

updateTransforms[]

object (FieldTransform)

更新后要执行的转换。

只有在操作为 update 时才能设置此字段。如果存在,此写入相当于以原子方式依序对同一文档执行 updatetransform

currentDocument

object (Precondition)

文档的可选前提条件。

如果已设置此属性,但目标文档未满足此要求,则写入将失败。

联合字段 operation。要执行的操作。operation 只能是下列其中一项:
update

object (Document)

要写入的文档。

delete

string

要删除的文档的名称。格式为:projects/{projectId}/databases/{databaseId}/documents/{document_path}

transform

object (DocumentTransform)

对文档应用转换。

DocumentTransform

文档的转换。

JSON 表示法
{
  "document": string,
  "fieldTransforms": [
    {
      object (FieldTransform)
    }
  ]
}
字段
document

string

要转换的文档的名称。

fieldTransforms[]

object (FieldTransform)

要按顺序应用于文档中各字段的转换列表。此字段不能留空。

FieldTransform

文档字段的转换。

JSON 表示法
{
  "fieldPath": string,

  // Union field transform_type can be only one of the following:
  "setToServerValue": enum (ServerValue),
  "increment": {
    object (Value)
  },
  "maximum": {
    object (Value)
  },
  "minimum": {
    object (Value)
  },
  "appendMissingElements": {
    object (ArrayValue)
  },
  "removeAllFromArray": {
    object (ArrayValue)
  }
  // End of list of possible types for union field transform_type.
}
字段
fieldPath

string

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

联合字段 transform_type。要应用于字段的转换。transform_type 只能是下列其中一项:
setToServerValue

enum (ServerValue)

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

increment

object (Value)

将指定值与字段的当前值相加。

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

maximum

object (Value)

将字段设置为其当前值与指定值的最大值。

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

minimum

object (Value)

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

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

appendMissingElements

object (ArrayValue)

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

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

相应的 transform_result 将是 null 值。

removeAllFromArray

object (ArrayValue)

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

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

相应的 transform_result 将是 null 值。

ServerValue

由服务器计算的值。

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