我们在生产中使用 MongoDB,对于某些用例,我们必须在每次更新操作后将更新的文档从应用程序推送到 Kafka。在 MongoDB 3.6 中引入了名为Change Stream的新功能,目前,我们正在尝试使用更改流功能,而不是从应用程序推送更新的文档。
但是更改流仅在更新操作期间返回字段的增量,并且还使用full_document='updateLookup'
但这会返回最新的多数提交版本文档,而不是针对该特定事件。
是否有任何方法(或替代方法)来获取特定事件的更新文档,例如 AWS DynamoDB(对于每个更新操作,DynamoDB 流都提供 NewImage)
对于 AWS Dynamodb 表中的每个更新事件,事件包含 OldImage(DynamoDB 表中的项目在修改之前出现的样子)和NewImage(DynamoDB 表中的项目在修改后出现的样子)
{
...
"dynamodb": {
"OldImage": {
"Message": {
"S": "New item!"
},
"Id": {
"N": "101"
}
},
"Keys": {
"Id": {
"N": "101"
}
},
"NewImage": {
"Message": {
"S": "This item has changed"
},
"Id": {
"N": "101"
}
}
},
...
}
但是在 MongoDB Change Stream 的情况下,full_document='updateLookup'
作为选项传递时将返回更新文档的最新多数提交版本
请参阅https://docs.mongodb.com/manual/changeStreams/#lookup-full-document-for-update-operations