2013-05-29 40 views
3

簡短問題:MongoDB信號到應用程序

如果集合中的內容發生了變化,MongoDB可以與應用程序聯繫嗎?某種觸發器會告訴應用程序某些字段被更改或添加或類似的東西?

+1

MongoDB不具備觸發器,大多數不是那種類型的觸發器。不確定哪些dbs做。通常,應用程序在db上執行pub/sub – Sammaye

回答

1

不,沒有回調機制。

更好地a)輪詢文檔以查找應用程序中的更改,b)使用消息隊列(例如RabbitMQ)從正在更改數據的應用程序發佈更改,以便知道數據更改的用戶。一個複雜的解決方案可能是c)停止oplog,請參閱MongoConnector。你的MongoDB必須是這個工作副本集的一部分。

2

如果您可以利用spring-data-mongodb,那麼您可以利用其implicit support of events來滿足您的要求。

  • onBeforeConvert - 在使用MongoConveter將對象轉換爲DBObject之前,在MongoTemplate中調用insert,insertList和save操作。
  • onBeforeSave - 在插入/保存DBObject到數據庫之前,在MongoTemplate中調用insert,insertList和save操作。
  • onAfterSave - 在插入/保存DBObject到數據庫後,在MongoTemplate插入,insertList和保存操作中調用。
  • onAfterLoad - 從數據庫中檢索DBObject後,在MongoTempnlate中調用find,findAndRemove,findOne和getCollection方法。
  • onAfterConvert - 在從數據庫檢索到的DBObject轉換爲POJO後,在MongoTempnlate中調用find,findAndRemove,findOne和getCollection方法。
相關問題