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

Can couchDB automatically update a specific doc when a new doc has been added?

我是 CouchDB 的新手。我知道我可以创建从 CouchDB 外部调用的 reduce 函数。但是,如果我希望 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}

现在假设我向数据库发送了一个新的 "event" 文档。 couchDB 可以自动计算 "score" 值的平均值并用新的平均值更新 doc id 1 吗?

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

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

对我来说,你的问题与应用层中的更改源 (http://docs.couchdb.org/en/1.6.1/api/database/changes.html) 的情况更相关。

一般来说,你持有一个请求到一个特定的数据库更改序列号打开(longpoll)。在向该数据库插入文档时,每次立即添加新文档时都会收到回调。在这个回调函数中,您可以轻松更改另一个特定文档。