MongoDB изменить потоки - PullRequest
       42

MongoDB изменить потоки

0 голосов
/ 01 октября 2019

Я начал работать с потоками изменений MongoDB и настроил несколько потоков для отслеживания изменений в около 30 базах данных. Мне нужно посмотреть только две коллекции, и мне было интересно, могу ли я написать какой-нибудь канал или фильтр, чтобы посмотреть коллекции с указанным именем или частью имени. Например, я получаю имя коллекции из namespaceDocument в ChangeStreamDocument, и я хочу посмотреть коллекции, которые, например, равны «проигрывателям», во всех базах данных. Я наблюдаю за изменениями на всем сервере, но теперь я получаю уведомление окаждая коллекция, которая изменена, и я не хочу этого, только определенные коллекции.

 final ChangeStreamPublisher<Document> publisher = client.watch(Arrays.asList(
            Aggregates.match(
                    Filters.in("operationType", Arrays.asList("insert", "update", "delete"))
            ))).fullDocument(FullDocument.UPDATE_LOOKUP);

Я думал, смогу ли я установить там какой-то фильтр, чтобы поток смотрел только коллекции с соответствующими именами.

Документация: https://docs.mongodb.com/manual/changeStreams/

1 Ответ

0 голосов
/ 02 октября 2019

В соответствии с Документацией вы можете настроить отслеживание развертывания, базы данных или коллекции. Так что, возможно, вы можете установить часы на коллекции «игроки». Другой альтернативой было бы установить дополнительные фильтры в Aggregates.Match. Каждое событие changestream возвращает объект пространства имен с именем ns, в котором участвуют изменения базы данных и имени коллекции.

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