Graph 从给定的节点获取遵循单向关系的可到达节点,并将该子图显示为树

Graph 从给定的节点获取遵循单向关系的可到达节点,并将该子图显示为树,graph,neo4j,cypher,neo4j-apoc,Graph,Neo4j,Cypher,Neo4j Apoc,我的问题是: 我有一个图表,其中我有一个关系:Item:用制作成一个:RECIPE,那些:RECIPE有一个或多个关系:由{数量}和:Item成分组成 正如您所想象的,您可以从一个高层:项到最基本的组件,建立多个层次的关系 我希望能够在只遵循一个方向的情况下找到从特定节点可以访问的所有节点。这部分很简单,我使用了apoc过程apoc.path.subgraph 但现在我的下一步是让结果显示为树而不是图形。在一个图中,我将在关系的接收端以多个:Item结束。我希望:Item被“复制”,以便它们由一

我的问题是:

我有一个图表,其中我有一个关系
:Item
:用
制作成一个
:RECIPE
,那些
:RECIPE
有一个或多个关系
:由{数量}
:Item
成分组成

正如您所想象的,您可以从一个高层
:项
到最基本的组件,建立多个层次的关系

我希望能够在只遵循一个方向的情况下找到从特定节点可以访问的所有节点。这部分很简单,我使用了
apoc
过程
apoc.path.subgraph

但现在我的下一步是让结果显示为树而不是图形。在一个图中,我将在关系的接收端以多个
:Item
结束。我希望
:Item
被“复制”,以便它们由一个由
关系组成的
:u链接


它是否仅在
cypher
中才可行?或者我必须使用另一种语言来处理一个图形,将其转换为“树”结构吗?

有一个apoc函数来实现这一点。下面的密码说明了is的功能

MATCH treePath=(root:Thing)-[:CHILD*0..]->(leaf:Thing)
WHERE NOT (leaf)-[:CHILD]->()
      AND NOT ()-[:CHILD]->(root)
WITH COLLECT(treePath) AS treePaths
CALL apoc.convert.toTree(treePaths) yield value AS tree
RETURN tree

有一个apoc函数可以实现这一点。下面的密码说明了is的功能

MATCH treePath=(root:Thing)-[:CHILD*0..]->(leaf:Thing)
WHERE NOT (leaf)-[:CHILD]->()
      AND NOT ()-[:CHILD]->(root)
WITH COLLECT(treePath) AS treePaths
CALL apoc.convert.toTree(treePaths) yield value AS tree
RETURN tree

工作结束后我会尝试一下,并给你一些反馈;-)工作结束后我会尝试一下,并给你一些反馈;-)