【问题标题】:Neo4J Cypher - Unwinding nodes from a path variableNeo4J Cypher - 从路径变量中展开节点
【发布时间】:2023-03-19 12:28:01
【问题描述】:

我见过展开列表的例子,但没有看到展开路径列表的例子。例如,我怎样才能找到一种节点与另一种节点之间的所有最短路径,并返回或获取找到的节点,在此示例中节点具体为b

MATCH p = allShortestPaths((a: person)-[:PARENT_OF]-(b: person))
UNWIND nodes(p) ... //get all of the b nodes
RETURN b

注意:我想在查询中使用 b 用于其他目的(省略),因此需要将路径展开为 b 节点列表。

【问题讨论】:

    标签: neo4j cypher


    【解决方案1】:

    匹配所有最短路径后,如果您只想要b 节点作为结果,您可以简单地RETURN b。我不认为您需要 UNWIND,因为 b 在您的 MATCH 中明确标识

    编辑:

    MATCH p = allShortestPaths((a: person)-[:PARENT_OF]-(b: person))
    WITH collect(b) as bees
    UNWIND bees as b
    //do something
    return b
    

    【讨论】:

    • 我应该更清楚,我想在返回之前使用b。我大大简化了我的查询。我会更新我的问题。
    • 啊好的,你需要只使用b,还是整个路径?
    【解决方案2】:

    您似乎只想查看所有具有来自另一个person 节点的传入PARENT_OF 节点的person 节点。如果是这样,这应该有效:

    MATCH ()-[:PARENT_OF]->(b:person)
    RETURN DISTINCT b;
    

    【讨论】:

      【解决方案3】:
      MATCH p = allShortestPaths((a: person)-[:PARENT_OF]-(b: person))
      with nodes(p) as nodes
      with nodes[size(nodes)-1] as b
      return b
      

      【讨论】:

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