以下文档表示变更流响应文档可以具有的所有可能的字段。
有些字段仅适用于某些操作,例如更新。下表描述了变更流响应文档中的每个字段:
领域 | 类型 | 描述 |
---|---|---|
_ID | 文献 | 与操作有关的元数据。作为行为 该 |
operationType |
串 | 发生的操作类型。可以是以下任意值:
|
fullDocument |
文献 | 通过创建或修改文件 对于 对于 对于 |
ns |
文献 | 受事件影响的名称空间(数据库和/或集合)。 |
ns.db |
串 | 数据库的名称。 |
ns.coll |
串 | 集合的名称。 对于 |
to |
文献 | 如果为,则此文档显示集合的新名称。对于的所有其他值,将省略此文档。operationType : rename ns operationType |
to.db |
串 | 数据库的新名称。 |
to.coll |
串 | 集合的新名称。 |
documentKey |
文献 | 包含文档的_id 由创建或修改的文件的insert ,
replace ,delete ,update 操作(即CRUD操作)。对于分片集合,还显示文档的完整分片键。_id 如果该字段已经是分片密钥的一部分,则不会重复该字段。 |
updateDescription |
文献 | 描述由更新操作更新或删除的字段的文档。 仅当 |
updateDescription.updatedFields |
文献 | 一个文档,其键对应于由更新操作修改的字段。每个字段的值对应于那些字段的新值,而不是导致新值的操作。 |
updateDescription.removedFields |
数组 | 由更新操作删除的字段数组。 |
clusterTime |
时间戳记 | 来自与事件相关联的oplog条目的时间戳。 对于作为多文档事务的一部分发生的事件,关联的变更流通知将具有相同的 在分片群集上,发生在不同分片上的事件可以具有相同的事件, 版本4.0中的新功能。 |
txnNumber |
长号 | 交易号。 仅当操作是多文档事务的一部分时才存在。 版本4.0中的新功能。 |
lsid |
文献 | 与事务关联的会话的标识符。 仅当操作是多文档事务的一部分时才存在。 版本4.0中的新功能。 |
insert
事件¶以下示例说明了一个insert
事件:
该documentKey
字段包括_id
和userName
字段。这表示engineering.users
集合已分片,并且在userName
和上都有分片键_id
。
该fullDocument
文档表示插入时文档的版本。
update
事件¶以下示例说明了一个update
事件:
以下示例说明了update
使用选项打开的变更流的事件:fullDocument : updateLookup
该fullDocument
文档表示已更新文档的最新多数批准版本。该fullDocument
文档可能与更新操作时的文档有所不同,具体取决于在更新操作和文档查找之间发生的交错多数授权操作的数量。
replace
事件¶以下示例说明了一个replace
事件:
一个replace
操作使用update命令,并且包括两个阶段:
documentKey
和删除原始文档documentkey
在fullDocument
一个的replace
事件表示替换文件的插入后的文件。
rename
事件¶版本4.0.1中的新功能。
一个rename
在集合重命名发生的事件。以下示例说明了一个rename
事件:
一个rename
事件导致一个
无效事件的流变化对打开的ns
集合或to
集合。
dropDatabase
事件¶版本4.0.1中的新功能。
一个dropDatabase
当数据库被丢弃发生的事件。以下示例说明了一个dropDatabase
事件:
甲dropDatabase
命令生成一个
降事件产生之前对数据库中的每个收集dropDatabase
数据库事件。
一个dropDatabase
事件导致一个
无效事件的流变化对打开的ns.db
数据库。
invalidate
事件¶以下示例说明了一个invalidate
事件:
对于针对集合打开的变更流,影响监视的集合的 放置事件, 重命名事件或 dropDatabase事件导致 无效事件。
对于针对数据库打开的变更流,影响受监视数据库的 dropDatabase事件导致 invalidate事件。
invalidate
事件关闭更改流游标。
resumeAfter
在无效事件(例如,集合删除或重命名)关闭流之后,您不能用来恢复更改
流。从MongoDB 4.2开始,您可以使用
startAfter在invalidate事件之后启动新的更改流。