4

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

MySQL 基于行的 binlog 可以使用完整的 binlog_row_image 来做到这一点。

4

2 回答 2

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']
   }
}

只有新值存在,与 MySQL 不同的是,你在之后和之前都得到了。

于 2019-08-29T09:12:39.970 回答
0

在 findAndModify 命令中,您可以选择指定(新:true/false)是返回文档的新版本(true)还是原始版本(false,这是默认值)

于 2019-08-29T08:46:51.080 回答