我已经构建了一个小图表,其中所有屏幕都已连接,并且屏幕流程因系统/用户而异。所以系统/用户是关系类型。
我希望从起始屏幕获取与某个关系链接的所有节点。我不在乎深度,因为我不知道图的深度。 这样的东西,但下面的查询需要获得结果,并返回不正确的连接不匹配属性{路径:' CC'}
匹配(n:screen {isStart:true}) - [r:NEXT * 0 .. {路径:' CC'}] - () 返回r,n
答案 0 :(得分:1)
一些建议:
确保您已为:screen(isStart)
:
CREATE INDEX ON :screen(isStart);
0..
。您没有指定:NEXT关系的方向性,因此DB必须同时查看传入和传出:NEXT关系。如果适用,请指定方向性。
要最小化结果行数,请添加WHERE
子句,以确保无法进一步扩展当前路径。
这是一个提议的查询,它结合了最后3条建议(根据您的需要进行修复):
MATCH (n:screen {isStart:true})-[r:NEXT* {path:'CC'}]->(x)
WHERE NOT (x)-[:NEXT {path:'CC'}]->()
return r,n;