0

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

4

0 回答 0