Обновление документа после каждой операции обновления в MongoDB с использованием Change Stream - PullRequest
0 голосов
/ 04 ноября 2018

Мы используем 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 при передаче full_document='updateLookup' в качестве опции будет возвращена самая последняя версия обновленного документа, принятая большинством *

См. https://docs.mongodb.com/manual/changeStreams/#lookup-full-document-for-update-operations

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...