如何在特定关系船类型中获取图中的所有节点

时间:2015-05-08 17:22:28

标签: graph neo4j iteration cypher nodes

我已经构建了一个小图表,其中所有屏幕都已连接,并且屏幕流程因系统/用户而异。所以系统/用户是关系类型。

我希望从起始屏幕获取与某个关系链接的所有节点。我不在乎深度,因为我不知道图的深度。  这样的东西,但下面的查询需要获得结果,并返回不正确的连接不匹配属​​性{路径:' CC'}

匹配(n:screen {isStart:true}) - [r:NEXT * 0 .. {路径:' CC'}] - () 返回r,n

1 个答案:

答案 0 :(得分:1)

一些建议:

  1. 确保您已为:screen(isStart)

    创建了索引
    CREATE INDEX ON :screen(isStart);
    
  2. 您确定要包含0长度路径吗?如果没有,请从您的查询中取出0..
  3. 您没有指定:NEXT关系的方向性,因此DB必须同时查看传入和传出:NEXT关系。如果适用,请指定方向性。

  4. 要最小化结果行数,请添加WHERE子句,以确保无法进一步扩展当前路径。

  5. 这是一个提议的查询,它结合了最后3条建议(根据您的需要进行修复):

    MATCH (n:screen {isStart:true})-[r:NEXT* {path:'CC'}]->(x)
    WHERE NOT (x)-[:NEXT {path:'CC'}]->()
    return r,n;