如何在CouchDb中访问地图功能中的相关文档?

时间:2011-03-11 17:15:34

标签: 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}

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

1 个答案:

答案 0 :(得分:6)

在map-reduce中,如果emit()中包含_id的对象,则该ID将是您使用?include_docs=true查询时获得的文档。

因此,当地图在加利福尼亚州运行时,它会emit(key, {_id: doc.Parent_id, entity: doc})

如果您使用?include_docs=true查询视图,则每一行都会有关于加利福尼亚州的文档value.entity,而且还会包含美国文档的doc值。

两个限制:

  1. 您只能以这种方式查询每个查询1个深度。
  2. 要使用include_docs技巧,您必须在emit()
  3. 时知道链接文档的_id

    另一个选项是view collation,其中发出所有相关或类似的文档,以便它们在视图中都是相邻的。 (通常你会发出一个文档的id和所有子文件的Parent_Id的键,所以它们都属于视图中的相同键。