使用cypher(Neo4j)获取特定路径作为输出

使用cypher(Neo4j)获取特定路径作为输出,neo4j,cypher,Neo4j,Cypher,我有一个网络图,如下所示 我想要的是“仅”获得节点1和节点4之间的最长路径。我已为此编写了以下查询: MATCH p = ((n {name: '1'})-[:Relation*..]-(n1{name: '4'})) WITH max(length(p)) AS pathLength MATCH p1 = ((n {name: '1'})-[:Relation*..]-(n1{name: '4'})) WHERE length(p1) = pathLength RETURN p1 但是,查

我有一个网络图,如下所示

我想要的是“仅”获得节点1和节点4之间的最长路径。我已为此编写了以下查询:

MATCH p = ((n {name: '1'})-[:Relation*..]-(n1{name: '4'}))
WITH max(length(p)) AS pathLength
MATCH p1 = ((n {name: '1'})-[:Relation*..]-(n1{name: '4'}))
WHERE length(p1) = pathLength
RETURN p1
但是,查询返回作为路径一部分的节点(上面的图像实际上是查询的结果)之间的所有关系,有没有办法避免这种情况

Neo4j新手,如有任何帮助,将不胜感激


谢谢

您正在使用
n
n1
之间所有可能路径的
路径长度
。尝试排序和限制路径长度:

MATCH p = ((n {name: '1'})-[:Relation*..]-(n1{name: '4'}))
WITH length(p) AS pathLength
ORDER BY pathLength DESC // greater path lengths first
LIMIT 1 // get only the greatest
MATCH p1 = ((n {name: '1'})-[:Relation*..]-(n1{name: '4'}))
WHERE length(p1) = pathLength
RETURN p1
编辑:

此外,我们还尝试在where条件下提供静态值(3)。 似乎没有改变什么

Neo4j浏览器的“连接结果节点”选项可能已启用。启用此选项后,Neo4j浏览器将尝试在图形可视化模式下连接结果节点。要禁用它以获得所需的结果,您应该转到Neo4j浏览器设置的“图形可视化”部分,并取消选中“连接结果节点”选项,如下图所示:

“额外”关系仅在图形可视化模式下显示。如果更改为表格、文本或代码,则不会显示这些关系