Есть ли встроенный способ вызова триггерных функций Mongodb?
Я хочу использовать MongoDB, так как он похож на версию базы данных электронной таблицы с ячейками: группы данных, участвующих в вычислениях суммы, или инвентаризацию с промежуточным итогом от документа к следующему. (конечно, можно ожидать другие виды расчетов)
Это означает, что каждый раз, когда мы получаем вставку / редактирование / удаление, необходимо выполнить перерасчет для чего-то, что может быть вовлечено в дальнейшие вычисления, таким образом, сам результат может быть триггером для другого перерасчета.
Существует ли встроенный способ проверки вставки / редактирования / удаления, который будет вызывать методы перерасчета? (может быть в каскаде, если результат влияет на следующий пересчет)
Я предполагаю, что такой триггер вызовет определенную функцию и предоставит ей: имя атрибута (вставлено / отредактировано / удалено), коллекция, идентификатор документа, тип операции и, возможно, предыдущие и новые значения)
(триггеры уровня атрибута и документа)
Полагаю, есть еще один способ увидеть это - иметь постоянно повторяющуюся функцию, которая постоянно читает файлы оплогов и действовать соответственно.
Спасибо Марк
1 ответ
Начиная с текущей версии (3.0.2), MongoDB не поддерживает триггеры, не говоря уже о каскадных триггерах. Документы с полями, которые зависят от значений других полей, также должны быть реализованы на прикладном уровне.
Будучи базой данных, которая оставляет почти всю логику приложения для приложения, подобная функциональность на самом деле не входит в сферу ее разработки.
Если вы действительно хотите использовать MongoDB для этого проекта (IMO, похоже, совсем не подходит для этого проекта), вам придется реализовать все это самостоятельно.
Вы можете либо реализовать это в приложении, но это может стать уродливым, если у вас есть длинные цепочки полевых зависимостей, так как вам нужно извлекать и сохранять каждый документ один за другим. Или вы можете попытаться изменить сам MongoDB, чтобы добавить поддержку для этого. MongoDB с открытым исходным кодом, так что вы можете взломать все, что вы хотите. Когда вы используете бесплатную версию, не забудьте прочитать условия лицензии AGPL, которые актуальны, когда вы позволяете системам, принадлежащим кому-то другому, подключаться к вашей модифицированной MongoDB.