【问题标题】:Get specific path as an output using cypher (Neo4j)使用 cypher (Neo4j) 获取特定路径作为输出
【发布时间】:2017-08-30 12:26:13
【问题描述】:

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

我想要的是“仅”获得节点 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 新手,如有任何帮助,将不胜感激。

谢谢

【问题讨论】:

    标签: neo4j cypher


    【解决方案1】:

    您正在使用pathLengthnn1 之间的所有可能路径。尝试订购和限制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 浏览器设置的“图形可视化”部分并取消选中“连接结果节点”选项,如下图所示:

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

    【讨论】:

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