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