是否可以从相关文档中获取加载值并将其作为键/值的一部分与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函数中的键/值发出。如果父母有另一个父母,我也想从中读取值。 (链接在其他数据库中行走)
答案 0 :(得分:6)
在map-reduce中,如果emit()
中包含_id
的对象,则该ID将是您使用?include_docs=true
查询时获得的文档。
因此,当地图在加利福尼亚州运行时,它会emit(key, {_id: doc.Parent_id, entity: doc})
如果您使用?include_docs=true
查询视图,则每一行都会有关于加利福尼亚州的文档value.entity
,而且还会包含美国文档的doc
值。
两个限制:
include_docs
技巧,您必须在emit()
另一个选项是view collation,其中发出所有相关或类似的文档,以便它们在视图中都是相邻的。 (通常你会发出一个文档的id和所有子文件的Parent_Id的键,所以它们都属于视图中的相同键。