Расширенная фильтрация Couchbase XDCR — Как настроить динамический диапазон дат в выражении фильтра
Есть ли какой-либо возможный механизм, с помощью которого мы можем настроить выражение фильтра XDCR с динамическим диапазоном дат в Couchbase?
пример может быть похож на настройку выражения фильтра для репликации сущностей старше года.DATE_DIFF_STR(NOW_STR(), Дата создания, "день") > 365
Согласно документации, кажется, что функции даты N1QL не поддерживаются https://docs.couchbase.com/server/current/xdcr-reference/xdcr-filtering-expressions.html , говорится: «Функции даты N1QL не поддерживаются расширенной фильтрацией XDCR. Для информацию о функциях даты N1QL см. на странице N1QL, посвященной функциям даты.
Пожалуйста, предложите, можно ли использовать какую-либо альтернативу функции даты N1QL при настройке выражения фильтра XDCR для фильтрации объектов на основе интервала времени между текущей датой и полем даты создания в данном документе.
1 ответ
К сожалению, с помощью фильтрации XDCR вы не сможете добиться того, чего хотите. Документ реплицируется при его добавлении или изменении, и в это время оценивается фильтр. Таким образом, если дата создания документа превышает отметку 365 дней, но впоследствии не обновляется, он не будет повторно оцениваться для репликации.
Я бы предложил использовать здесь службу событий, которая позволяет вам определить таймер, который сработает в какой-то момент в будущем. Итак, в вашем случае, когда приходит документ, вы должны установить таймер для созданной даты+365. Затем вы можете настроить обратный вызов на выполнение «всего, что вы хотите» — например, вы можете обновить документ с помощью поля «replication=true», которое затем можно будет отфильтровать в XDCR.