CouchDB覆盖基本JSON文档

时间:2015-06-12 19:29:30

标签: json couchdb

CouchDB中是否存在用于创建JSON文档的标准策略(或商定的最佳实践):

  • 基于另一份文件。
  • 包含少量代表原始文档覆盖的JSON属性。

收到请求后,CouchDB会计算应用了覆盖的结果JSON文档并将其作为响应返回。用户不需要知道或关心它是复合文档。

1 个答案:

答案 0 :(得分:0)

这是一个非常好的问题,因为你要求可能性和最佳实践。答案是 - 这取决于; - )

通常你可以使用CouchDB _list来做到这一点。例如,您从_list所基于的_view获得两个文档,计算复合文档并对其进行响应。缺点是这种服务器端计算与性能非常相关。当您的复合文档被请求时,请不要使用它。每个用户会话。但是,当你的用例如同例如每晚一次来自其他服务的请求应该没问题。

当你采用另一种方法导致复合文档准备响应存储在索引中的情况时,CouchDB会爱你。

如果要完全按照原样存储复合文档,可以使用CouchDB _update处理程序。您可以从有效负载中获取文档的自定义属性,从数据库获取默认文档,将所有内容合并到复合文档中,并将其存储在唯一ID下(或覆盖默认文档)。

最后但并非最不重要的是,您还可以使用两种基于CouchDB _view的方法。两者都不会在一个请求中提供复合文档,但默认文档和自定义覆盖。第一种方法是使用多部分密钥构建视图,该部分将父文档(默认数据)和子代(覆盖)组合在一起 - 第二种方法是创建具有链接数据的视图:将自定义设置作为值发布视图行并使用默认文档的_id覆盖视图行_id。当使用查询参数?include_docs=true请求视图行时,默认数据和自定义覆盖将包含在结果中。