在此图中,我想找到所有灰色节点在红色气泡中圈出,而不是任何其他灰色节点.也就是说所有带有label:OTHER的节点都是A和C之间路径上节点的子节点.NB A和C之间的路径可能比这里显示的3个节点长.
所以我想要做的是获得一个路径p = A ... C和子查询路径中的每个节点 - [:HAS] - >(n:OTHER)关系.
但是我坚持使用子查询,因为它不是在初始查询的结果集上,而是在所有节点上.
所以这给了我所有的灰色节点:(而不仅仅是红色泡泡中的节点.请帮忙
match p=(n:MAIN)-[:EXTENDS*]->(m:MAIN)
where n.name = 'A' AND m.name='C'
WITH nodes(p) AS collection
match (l:MAIN)-[:HAS]->(u:OTHER) return u; //This last part is my subquery
Run Code Online (Sandbox Code Playgroud)
小智 10
问题在于子查询的"MATCH"中没有任何内容使用第一个查询结果中的节点.
您可以使用标识符(例如"middle")在所需路径A-B上显式指定节点,然后在子查询的匹配模式中使用它,
MATCH p=(n:MAIN)-[:EXTENDS*0..]->(middle:MAIN)-[:EXTENDS*0..]->(m:MAIN)
WHERE n.name = 'A' AND m.name='C'
WITH middle
MATCH (middle:MAIN)-[:HAS]->(u:OTHER)
RETURN u
Run Code Online (Sandbox Code Playgroud)