MongoDB 更改流:我可以在更新/删除之前获取值吗?

aun*_*low 4 mongodb mysqlbinlog mongodb-oplog changestream

更新操作上的更改流事件仅返回更改的文档,与 oplog 相同。我可以在更新之前获取文档(或一些更新的值)吗?

MySQL 基于行的 binlog 可以使用完整的binlog_row_image 来完成此操作。

Raj*_*oel 6

不,从更改流来看,更新事件如下所示:

{
   _id: { < Resume Token > },
   operationType: 'update',
   clusterTime: <Timestamp>,
   ns: {
      db: 'engineering',
      coll: 'users'
   },
   documentKey: {
      _id: ObjectId("58a4eb4a30c75625e00d2820")
   },
   updateDescription: {
      updatedFields: {
         email: 'alice@10gen.com'
      },
      removedFields: ['phoneNumber']
   }
}
Run Code Online (Sandbox Code Playgroud)

仅显示新值,这与 MySQL 不同,在 MySQL 中您可以同时获得之后和之前的值。