从Neo4J的一个节点开始获取整个子图?

时间:2019-03-07 14:00:06

标签: neo4j cypher graph-databases

我想从特定节点开始提取(检索)图中的所有节点和关系。

我尝试过类似的事情:

MATCH (n:Resource {resource_id: "R208997"})
MATCH p=(n)-[*]->(m) 
RETURN p

这将从我拥有的节点中获取所有路径,但这并不是我真正想要的。

我想要的是一个显示以下内容的表:

From | Rel. | To
----------------
x    | r    | y
z    | r2   | g

我正在使用版本:3.4.12 Neo4J的社区版,而我正在处理的数据如下所示: enter image description here

1 个答案:

答案 0 :(得分:1)

最好的方法是使用APOC Procedures,我们有一些路径扩展程序可有效地做到这一点。

您可以为此使用apoc.path.subgraphAll()的YIELDing关系,您可以相应地对其进行别名:

MATCH (n:Resource {resource_id: "R208997"})
CALL apoc.path.subgraphAll(n, {relationshipFilter:'>'}) YIELD relationships
UNWIND relationships as rel
RETURN startNode(rel) as from, type(rel) as rel, endNode(rel) as to

如果只需要从节点而不是节点本身输出某些属性,则可以在RETURN中相应地进行修改。