我有一个图形网络,如下所示
我想要的是“仅”获得节点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的新手,我们将不胜感激。
由于
答案 0 :(得分:1)
您正在使用pathLength
和n
之间所有可能路径的n1
。尝试订购并限制pathLength
:
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浏览器设置的“图形可视化”部分,取消选中“连接结果节点”选项,如下图所示:
“额外”关系仅在图表可视化模式中显示。如果更改为表格,文本或代码,则不会显示这些关系。