Docs 菜单
Docs 主页
/
MongoDB Manual
/ /

update 事件

在此页面上

  • 总结
  • 说明
  • 例子
update

当操作更新集合中的文档时,会发生 update 事件。

字段
类型
说明
_id
文档

一个 BSON对象,用作变更流事件的标识符。 恢复变更流时,此值用作resumeAfter参数的resumeToken_id对象具有以下形式:

{
"_data" : <BinData|hex string>
}

_data 类型取决于 MongoDB 版本,在某些情况下,还取决于变更流打开或恢复时的特征兼容性版本 (fCV)。有关 _data 类型的完整列表,请参阅恢复令牌

有关通过 resumeToken 恢复变更流的示例,请参阅恢复变更流

clusterTime
时间戳

与事件相关的 oplog 条目中的时间戳。

多文档事务相关的变更流事件通知都具有相同的 clusterTime 值:提交事务的时间。

在分片集群上,具有相同 clusterTime 的事件不一定都与同一事务有关。有些事件与事务完全无关。

要标识单个事务的事件,您可以在变更流事件文档中结合使用 lsidtxnNumber

documentKey
文档

一个文档,其中包含 CRUD 操作创建或修改的文档的 _id 值。

对于分片集合,此字段还显示文档的完整分片键。如果 _id 字段已经是分片键的一部分,则该字段不会重复。

fullDocument
文档

CRUD 操作创建或修改的文档。

只有在您配置变更流时将 fullDocument 设置为 updateLookup,才会出现此字段。在您使用 updateLookup 配置变更流时,该字段表示更新操作所修改文档的当前多数提交版本。如果任何其他多数提交操作在原始更新操作和完整文档查找之间修改文档,则该文档可能与 updateDescription 所述的变更不同。

有关更多信息,请参阅查找更新操作的完整文档

lsid
文档

与事务关联的会话标识符。

只有当操作是多文档事务的一部分时才会出现。

ns
文档

受事件影响的命名空间(数据库和/或集合)。

ns.coll
字符串

发生事件的集合的名称。

ns.db
字符串

发生事件的数据库的名称。

operationType
字符串

变更通知报告的操作类型。

为这些变更事件返回 update 值。

updateDescription
文档

一个文档,描述由更新操作更新或删除的字段。

updateDescription.
removedFields
阵列

一个字段数组,包含由更新操作删除的字段。

updateDescription.
truncatedArrays
阵列

一个文档数组,用于记录使用一个或多个以下阶段通过基于管道的更新执行的数组截断:

如果替换了整个数组,则会在updateDescription.updatedFields 下报告截断情况。

updateDescription.
truncatedArrays.
field
字符串

截断字段的名称。

updateDescription.
truncatedArrays.
newSize
整型

截断数组中的元素数量。

updateDescription.
updatedFields
文档

一个文档,其键对应于由更新操作修改的字段。每个字段的值对应于这些字段的新值,而不是产生新值的操作。

txnNumber
NumberLong

lsid 一起,是一个有助于唯一标识事务的数字。

只有当操作是多文档事务的一部分时才会出现。

以下示例说明了 update 事件:

{
"_id": { <Resume Token> },
"operationType": "update",
"clusterTime": <Timestamp>,
"ns": {
"db": "engineering",
"coll": "users"
},
"documentKey": {
"_id": ObjectId("58a4eb4a30c75625e00d2820")
},
"updateDescription": {
"updatedFields": {
"email": "alice@10gen.com"
},
"removedFields": ["phoneNumber"],
"truncatedArrays": [ {
"field" : "vacation_time",
"newSize" : 36
} ]
}
}

以下示例说明了使用 fullDocument : updateLookup 选项打开的变更流的 update 事件:

{
"_id": { <Resume Token> },
"operationType": "update",
"clusterTime": <Timestamp>,
"ns": {
"db": "engineering",
"coll": "users"
},
"documentKey": {
"_id": ObjectId("58a4eb4a30c75625e00d2820")
},
"updateDescription": {
"updatedFields": {
"email": "alice@10gen.com"
},
"removedFields": ["phoneNumber"],
"truncatedArrays": [ {
"field" : "vacation_time",
"newSize" : 36
} ]
},
"fullDocument": {
"_id": ObjectId("58a4eb4a30c75625e00d2820"),
"name": "Alice",
"userName": "alice123",
"email": "alice@10gen.com",
"team": "replication"
}
}

fullDocument 文档代表已更新文档的最新多数提交版本。fullDocument 文档可能与更新操作时的文档有所不同,这取决于更新操作和文档查找之间发生的交替多数提交操作的数量。

后退

替换

在此页面上