使用Change Stream在MongoDB中进行每次更新操作后更新文档

时间:2018-11-04 18:28:34

标签: mongodb changestream

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

0 个答案:

没有答案