Как получить полный документ из MongoDB changeStream при удалении документа? - PullRequest
0 голосов
/ 08 июля 2019

Мой код

У меня есть MongoDB с двумя коллекциями, Items и Calculations.

Items
  value:  Number
  date:   Date
Calculations
  calculation:  Number
  start_date:   Date
  end_date:     Date

A Calculation - это хранимый расчет, основанный на значениях Item для всех Items в БД, которые имеют даты между датами начала и окончания Calculation.

Монго потоки изменений

Я считаю, что хороший способ создания / обновления Calculations - это создать поток изменений Mongo в коллекции Items, который прослушивает изменения в коллекции Items, чтобы затем пересчитать соответствующие Calculations.

Проблема заключается в том, что в соответствии с документами Mongo Change Event , при удалении документа поле fullDocument опускается, что не позволяет мне получить доступ к дате удаленного Item, что сообщите, какой Calculations должен быть обновлен.

Вопрос

Есть ли способ получить доступ к fullDocument события изменения Mongo, которое было вызвано удалением документа?

1 Ответ

1 голос
/ 09 июля 2019

Нет, я не верю, что есть способ.С https://docs.mongodb.com/manual/changeStreams/#event-notification:

Потоки изменений только уведомляют об изменениях данных, которые сохраняются для большинства несущих данные элементов в наборе реплик.

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

Решением вашего вопроса будут транзакции в MongoDB 4.0 .То есть вы можете настроить Calculations и удалить соответствующий Items в одной атомарной операции.

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