我们在生产中使用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