2016-02-04 79 views
2

我對CouchDB非常陌生。我知道我可以創建從CouchDB外部調用的reduce函數。但是如果我希望CouchDB在將新文檔添加到數據庫時自動執行某些操作?例如,說我有這個分貝:添加新文檔時,couchDB能否自動更新特定文檔?

{_id:1, type:stats, meanscore:3} 
{_id:2, type:event, date:02/01/2016, score:4} 
{_id:3, type:event, date:02/02/2016, score:2} 

現在說我發送一個新的「事件」文檔到分貝。 couchDB可以自動計算「分數」值的平均值,並用新的平均值更新文檔ID 1嗎?

回答

1

不,CouchDB無法做到這一點。通常,坐在CouchDB上的應用程序層將處理這種任意代碼要求。

但是,您的具體示例正是查看reduce函數的用途。如果這不僅僅是爲了說明你的問題,而是實際上你想要做什麼,那麼你應該使用減少功能。

+0

謝謝,這有幫助。 – Mike

1

對於我來說,您的問題與應用程序層中更改Feed(http://docs.couchdb.org/en/1.6.1/api/database/changes.html)的情況更相關。

一般情況下,您持有對特定數據庫更改序號open(longpoll)的請求。在向該數據庫插入文檔時,每次立即添加新文檔時都會收到回調。在此回調函數中,您可以輕鬆更改另一個特定的文檔。