小编Wil*_*Pan的帖子

匹配变长路径,同时限制节点类型

假设我有一个图表,其中节点为红色或绿色。我从红色节点开始,我想获取连接到我的起始节点的所有其他红色节点,仅通过绿色节点。

例如,如果我有以下图表:

   (R1)
  /    \
(G1)   (G3)
 |      |
(G2)   (R3)
 |      |
(G5)   (G4)
 |      |
(R2)   (R4)
Run Code Online (Sandbox Code Playgroud)

我想得到以下结果集:

R1, R2
R1, R3
Run Code Online (Sandbox Code Playgroud)

关于如何编写该查询有什么想法吗?

谢谢,

编辑:创建图表:

CREATE (r1:Red{label: "R1"})-[:foo]->(g1:Green{label: "G1"})-[:foo]->(g2:Green{label: "G2"})-[:foo]->(g5:Green{label:"G5"})-[:foo]->(r2:Red{label: "R2"}),
    (r1)-[:foo]->(g3:Green{label: "G3"})-[:foo]->(r3:Red{label: "R3"})-[:foo]->(g4:Green{label: "G4"})-[:foo]->(r4:Red{label: "R4"});
Run Code Online (Sandbox Code Playgroud)

我尝试了以下查询,但它返回了我不想要的节点 R4。

 MATCH (r1:Red{label:'R1'})-[:foo*]->(green:Green)-->(other_red) RETURN r1, green, other_red
Run Code Online (Sandbox Code Playgroud)

cypher

5
推荐指数
1
解决办法
240
查看次数

标签 统计

cypher ×1