couchdb - 如何在 CouchDb 的 map 功能中访问相关文档?

标签 couchdb

是否可以从相关文档中获取加载值并将它们作为键/值的一部分与来自 CouchDb 中当前文档的值一起发出?

例子:

{Id: 1, Type: Entity, Name: US, Code: 001}
{Id: 2, Type: Entity, Name: Alaska, Code: AL, Parent_Id: 1}
{Id: 3, Type: Entity, Name: California, Code: CAL, Parent_Id: 1}
{Id: 4, Type: Entity, Name: Juneau, Code: C-JUN, Parent_Id: 2}

我想从父实体和当前实体中读取代码、名称等,并将它们作为映射函数中的键/值发出。如果 parent 有另一个 parent ,我也想从中读取值。 (链接走在其他数据库)

最佳答案

在 map-reduce 中,如果您 emit()带有 _id 的对象在其中,则该 id 将是您使用 ?include_docs=true 查询时获得的文档.

因此,本地图在加利福尼亚运行时,它会执行 emit(key, {_id: doc.Parent_id, entity: doc})
如果您使用 ?include_docs=true 查询 View ,每一行都会有一个 value.entity关于加利福尼亚的文件,还有一个doc值(value)与美国的文件。

两个限制:

  • 以这种方式,每个查询只能查询 1 级深度。
  • 使用 include_docs技巧,当你emit() 时,你必须知道链接文档的_id。

  • 另一个选项是 view collation ,其中所有相关或相似的文档都被发出,以便它们在 View 中都是相邻的。 (通常,您发出一个文档的 id 及其所有子文档的 Parent_Id 的键,因此它们都属于 View 中的同一键。

    关于couchdb - 如何在 CouchDb 的 map 功能中访问相关文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5276077/

    相关文章:

    couchdb - 如何防止匿名用户阅读 couchdb?

    oauth - 安全复制的分步说明?

    security - 基于每个数据库的 CouchDB 授权

    在从 Hyperledger Composer v0.18.0 到 v0.19.0 的查询中使用 ORDER BY 的 CouchDB 索引错误

    cross-domain - 来自 XMLHttpRequest 的 CouchDB 跨域访问?

    javascript - CouchDB 按链接文档属性排序

    cordova - 使用 CouchDB/PouchDB 时的应用程序架构

    view - View 中的 CouchDB 更改 API

    jquery - 使用 Ajax/jQuery 从 CouchDB 读取连续源

    mapreduce - 您如何在 Couchbase 中按值对 _View_ 的结果进行排序?