从neo4j Cypher分别获取所有路径

时间:2017-07-14 06:35:32

标签: graph neo4j cypher

My graph

我的开始节点是A.结束节点是E.

neo4j中的cyper查询是什么,我将得到结果

路径一:A> b> c> d> e 路径二:A> b> c> f> g> ë

我试过了:
 MATCH p =(n) - [*] - >(m)其中n.name ='A'和m.name ='E'返回p
但我得到的是完整的节点列表而不是分离的节点列表。

提前致谢

1 个答案:

答案 0 :(得分:1)

让我们看看您的图表:

CREATE (a:Node {name: "A"})
CREATE (b:Node {name: "B"})
CREATE (c:Node {name: "C"})
CREATE (d:Node {name: "D"})
CREATE (e:Node {name: "E"})
CREATE (f:Node {name: "F"})
CREATE (g:Node {name: "G"})
MERGE (a)-[:HAS]->(b)-[:HAS]->(c)-[:HAS]->(d)-[:HAS]->(e)
MERGE (c)-[:HAS]->(f)-[:HAS]->(g)-[:HAS]->(e);

这是对的吗?

那么,你写的声明会返回两个路径......当然,浏览器中的可视化会显示完整的图形,但是看看其他格式,你会看到你和#39;得到两行"行"每个都包含一条路径。

您可以通过尝试以下方式查看

MATCH p=(n1:Node)-[*]-(n2:Node)
WHERE n1.name="A"
AND n2.name="E"
RETURN p LIMIT 1;

这将只返回一个路径,浏览器将只显示一个路径。这只是正确解释/处理结果的问题。这将仅显示第二条路径:

MATCH p=(n1:Node)-[*]-(n2:Node)
WHERE n1.name="A"
AND n2.name="E"
RETURN p SKIP 1 LIMIT 1;

希望这有帮助, 汤姆