如何在Neo4j中获取从根到叶(DFS方式)的所有路径,并返回包含节点和关系的结果
我有一个图表,我用下面的密码来显示图表中的所有路径。这将返回所有节点。 CQL:MATCH p=(根{id:'start'})-[*]->(叶)返回提取(节点中的x(p)| x.name)作为结果如何在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
我想返回节点和边,以便外行能够理解图中从根到叶的所有路径。所有可用路径的列表如下所示
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“”),这样,如果没有这样的属性,就会添加一个空字符串