Мы используем 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