2013-05-29 3 views
3

Короткий вопрос:Сигнал MongoDB к применению

Может ли MongoDB связаться с приложением, если что-то изменилось в коллекции? Какой-то триггер, который будет сигнализировать приложению о том, что какое-то поле было изменено или добавлено или что-то в этом роде?

+1

MongoDB не обладает триггерами, большинство из них не являются одними из них. Не уверен, что делать. Обычно приложение создает паб/sub на db – Sammaye

ответ

1

Нет, нет механизма обратного вызова.

Лучше а) опросить документ для внесения изменений из вашего приложения, b) использовать очередь сообщений (например, RabbitMQ), чтобы публиковать изменения из приложения, которое меняет данные для подписчиков, которые хотят знать, когда данные изменяются. Комплексным решением может быть c) хвост oplog, см. MongoConnector. Ваш MongoDB должен быть частью набора реплик для этого.

2

Если вы можете использовать пружинные данные-mongodb, то вы можете воспользоваться его implicit support of events в соответствии с вашими требованиями.

  • onBeforeConvert - вызов в MongoTemplate вставки, insertList и сохранение операций до преобразования объекта в объект DBO с помощью MongoConveter.
  • onBeforeSave - вызов в MongoTemplate вставки, insertList и сохранение операций перед вставкой/сохранением DBObject в базе данных.
  • onAfterSave - вызов в MongoTemplate вставки, insertList и сохранение операций после вставки/сохранения DBObject в базе данных.
  • onAfterLoad - вызов в MongoTempnlate находит, findAndRemove, findOne и методы getCollection после того, как DBObject извлекается из базы данных.
  • onAfterConvert - вызов MongoTempnlate, findAndRemove, findOne и getCollection после того, как DBObject, полученный из базы данных, был преобразован в POJO.
Смежные вопросы