如何访问CouchDb中map函数中的相关文档?

如何访问CouchDb中map函数中的相关文档?,couchdb,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: Ju

是否可以从相关文档中获取加载值,并将其与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函数中的键/值发出。如果父对象还有另一个父对象,我也希望从中读取值。(在其他数据库中链接漫游)

在map reduce中,如果您
emit()
一个对象中有
\u id
,那么当您使用
?include\u docs=true
进行查询时,该id将是您得到的文档

因此,当map在加利福尼亚州运行时,它将执行
emit(key,{u id:doc.Parent\u id,entity:doc})

如果您使用
?include_docs=true
查询视图,则关于加利福尼亚州的文档的每一行都将有一个
值。entity
,但对于美国的文档也有一个
doc

两个限制:

  • 通过这种方式,每个查询只能查询1级深度
  • 要使用
    包含文档
    技巧,必须在
    emit()时知道链接文档的id

  • 另一个选项是,所有相关或类似的文档都被发出,以便它们在视图中都是相邻的。(通常,您会发出一个包含一个文档id及其所有子文档的父id的键,因此它们在视图中都属于同一个键。

    我们存储的是层次结构数据。我知道我可以存储整个路径,然后在键中发出它。但我们也有层次结构,如经常更改的组织结构图。更新所有相关文档中的路径文档可能是一个问题。在这种情况下,您建议使用graph db吗?是的,我忘了提到graph db作为一种可能性。CouchDB非常棒,但它根本不是一个图形数据库。如果您有非常多的graph数据,也许值得一看。