【问题标题】:Get all path separately from neo4j Cypher与 neo4j Cypher 分开获取所有路径
【发布时间】:2017-12-19 03:47:17
【问题描述】:

My graph

我的起始节点是 A 。结束节点是E。

neo4j 中的 cyper 查询可以是什么,这样我会得到结果

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

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

提前致谢

【问题讨论】:

  • “完整”与“分离”节点列表是什么意思?

标签: graph neo4j cypher


【解决方案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);

对吗?

那么,您编写的语句返回两个路径...当然,浏览器中的 可视化 将显示完整的图表,但查看其他格式,您会发现得到两个“行”,每个包含一个路径。

您可以通过尝试以下方法看到

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;

希望这会有所帮助, 汤姆

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-06
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多