MongoDB Force Update - PullRequest
       11

MongoDB Force Update

0 голосов
/ 04 сентября 2018

Я работаю над приложением, которое использует 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 нам недоступна.

Спасибо за помощь!

1 Ответ

0 голосов
/ 07 сентября 2018

Разъем Debezium MongoDB выполнит начальную синхронизацию захваченных коллекций. Таким образом, нет необходимости «трогать» все документы, чтобы направить их в Кафку. Только после того, как этот моментальный снимок будет создан, соединитель переключится на хвост оплога, чтобы зафиксировать все изменения с этого момента.

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