是否可以从相关文档中获取加载值并将它们作为键/值的一部分与来自 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)与美国的文件。
两个限制:
include_docs
技巧,当你emit()
时,你必须知道链接文档的_id。 另一个选项是 view collation ,其中所有相关或相似的文档都被发出,以便它们在 View 中都是相邻的。 (通常,您发出一个文档的 id 及其所有子文档的 Parent_Id 的键,因此它们都属于 View 中的同一键。
关于couchdb - 如何在 CouchDb 的 map 功能中访问相关文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5276077/