添加新文档后,couchDB能否自动更新特定文档?

时间:2016-02-04 18:26:43

标签: couchdb

我对CouchDB很新。我知道我可以创建从CouchDB之外的东西调用的reduce函数。但是,如果我希望CouchDB在将新文档添加到数据库时自动执行某些操作,该怎么办?例如,假设我有这个db:

chown -R asterisk:asterisk /etc/asterisk/ /var/lib/asterisk /usr/share/asterisk
chmod 644 /etc/asterisk/*

现在说我向db发送一个新的“事件”文档。 couchDB能否自动计算“得分”值的平均值,并用新的平均值更新doc id 1?

2 个答案:

答案 0 :(得分:1)

不,CouchDB无法开箱即用。通常,位于CouchDB上的应用程序层将处理这种任意代码要求。

但是,您的具体示例正是视图reduce函数的用途。如果这不仅仅是为了说明你的问题,而是你想要做的事情,那么你应该使用reduce函数。

答案 1 :(得分:1)

对我而言,您的问题与应用层中的更改Feed(http://docs.couchdb.org/en/1.6.1/api/database/changes.html)的情况更为相关。

通常,您对特定数据库更改序列号打开请求(longpoll)。在文档插入到该数据库时,每次立即添加新文档时都会收到回调。在此回调函数中,您可以轻松更改另一个特定文档。