Я работаю над приложением, которое использует Debezium для потоковой передачи изменений из MongoDB в кластер Kafka. tl; dr - debezium следит за монлогом oplog для внесения изменений в документ и сохраняет весь документ на kafka как json.
У нас есть куча устаревших устаревших данных о производстве, которые мы хотели бы сохранить на Кафке как есть. Для того чтобы документы были получены Debezium, они сначала должны появиться в OpLog. По сути, нам нужно touch
каждый документ в нашем производственном репозитории mongo без изменения каких-либо данных в документе. Моей первоначальной мыслью было обновить поле с его текущим содержимым:
db.contributors.update(
{},
{
$set: {
"meta.collectionName": "contributors"
}
},
{ multi: true}
)
Тем не менее, монго рассматривает это как ноуп:
WriteResult({ "nMatched" : 959, "nUpserted" : 0, "nModified" : 0 })
Мой вопрос: возможно ли принудительно обновить $set
в MongoDB так, чтобы значение nModified
в вышеприведенном выводе было 959
без фактического изменения какого-либо из полей?
Одно замечание: мы используем WiredTiger в качестве нашего бэкэнда, поэтому команда mongo touch
нам недоступна.
Спасибо за помощь!