如何在Neo4j中获取从根到叶(DFS方式)的所有路径,并返回包含节点和关系的结果

如何在Neo4j中获取从根到叶(DFS方式)的所有路径,并返回包含节点和关系的结果,neo4j,cypher,Neo4j,Cypher,我有一个图表,我用下面的密码来显示图表中的所有路径。这将返回所有节点。 CQL:MATCH p=(根{id:'start'})-[*]->(叶)返回提取(节点中的x(p)| x.name)作为结果 我想返回节点和边,以便外行能够理解图中从根到叶的所有路径。所有可用路径的列表如下所示 MATCH p=(root {id: 'start'})-[*]->(leaf) // limit the match to the ones that end at a leaf WHERE NOT (l

我有一个图表,我用下面的密码来显示图表中的所有路径。这将返回所有节点。 CQL:MATCH p=(根{id:'start'})-[*]->(叶)返回提取(节点中的x(p)| x.name)作为结果


我想返回节点和边,以便外行能够理解图中从根到叶的所有路径。

所有可用路径的列表如下所示

MATCH p=(root {id: 'start'})-[*]->(leaf)  
// limit the match to the ones that end at a leaf
WHERE NOT (leaf)-->()


RETURN DISTINCT REDUCE (s='', r in RELATIONSHIPS(p) | 
               s+
               CASE WHEN s='' THEN '('+startNode(r).name + ')-[:'+ type(r)+']->('+ endNode(r).name+')'
                    ELSE '-[:'+ type(r)+']->('+ endNode(r).name+')'
               END
       ) AS path

所有可用路径的列表如下所示

MATCH p=(root {id: 'start'})-[*]->(leaf)  
// limit the match to the ones that end at a leaf
WHERE NOT (leaf)-->()


RETURN DISTINCT REDUCE (s='', r in RELATIONSHIPS(p) | 
               s+
               CASE WHEN s='' THEN '('+startNode(r).name + ')-[:'+ type(r)+']->('+ endNode(r).name+')'
                    ELSE '-[:'+ type(r)+']->('+ endNode(r).name+')'
               END
       ) AS path

谢谢,这很有效。另外一个问题是,如果我想在RETURN语句中添加仅存在于少数节点中的节点的某些属性,那么该如何做。e、 g如果某些节点有属性“expression”,那么如何插入该属性。@priya您可以插入+COALESCE(startNode(r).expression“”),这样,如果没有这样的属性,就可以将空字符串添加到hanks中,这样做效果很好。另外一个问题是,如果我想在RETURN语句中添加仅存在于少数节点中的节点的某些属性,那么该如何做。e、 g如果某些节点有属性“expression”,那么如何插入该属性。@priya您可以插入+COALESCE(startNode(r).expression“”),这样,如果没有这样的属性,就会添加一个空字符串