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