变更流监视集合、数据库或部署中是否有更改。
当监视的资源发生更改时,变更流会返回变更事件通知文档,其中包含相关操作以及所做更改的信息。
操作类型
事件 | 说明 |
|---|---|
从集合中删除文档时发生。 | |
从数据库中删除集合时发生。 | |
删除数据库时发生。 | |
在一个操作将文档添加到集合时发生。 | |
当操作使变更流无效时发生此事件。 | |
修改分片键时发生。 6.1 版本新增内容。 | |
重命名集合时发生。 | |
当更新操作从集合中删除文档并将其替换为新文档时发生此事件。 | |
当一个操作更新集合中的文档时发生。 |
注意
当“替换”表示形式更为简洁时,服务器可能会将更新操作作为替换事件返回。如果您监听更新操作,也应同时监听替换操作。
恢复令牌
每个变更事件都包含一个 _id字段,该字段是一个BSON对象,用作变更流事件的标识符。有关通过 resumeToken 恢复变更流的示例,请参阅恢复变更流。
扩展事件
6.0 版本中的新功能。
变更流支持数据定义语言 (DDL) 事件通知,例如 createIndexes 和 dropIndexes。如需包含扩展事件,请在打开变更流游标时使用 showExpandedEvents 选项。
例如:
let cur = db.names.aggregate( [ { $changeStream: { showExpandedEvents: true } } ] ) cur.next()