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

Sha*_*bie 3 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}
Run Code Online (Sandbox Code Playgroud)

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

Jas*_*ith 6

在map-reduce中,如果你emit()是一个包含_idin 的对象,那么该id将是你查询时得到的文档?include_docs=true.

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

如果查询视图?include_docs=true,则每行将包含value.entity有关加利福尼亚的文档,但也doc包含美国文档的值.

两个限制:

  1. 您只能以这种方式查询每个查询1级深度.
  2. 要使用该include_docs技巧,您必须知道链接文档的_idemit()

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