我对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?
答案 0 :(得分:1)
不,CouchDB无法开箱即用。通常,位于CouchDB上的应用程序层将处理这种任意代码要求。
但是,您的具体示例正是视图reduce函数的用途。如果这不仅仅是为了说明你的问题,而是你想要做的事情,那么你应该使用reduce函数。
答案 1 :(得分:1)
对我而言,您的问题与应用层中的更改Feed(http://docs.couchdb.org/en/1.6.1/api/database/changes.html)的情况更为相关。
通常,您对特定数据库更改序列号打开请求(longpoll)。在文档插入到该数据库时,每次立即添加新文档时都会收到回调。在此回调函数中,您可以轻松更改另一个特定文档。