2016-02-04 54 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)的请求。在向该数据库插入文档时,每次立即添加新文档时都会收到回调。在此回调函数中,您可以轻松更改另一个特定的文档。