我希望匹配2个节点之间的路径,其中存在0或更多某种类型的关系但以特定的不同关系结束,例如它应匹配:
(a) -> [:GRANT] -> (b)
(a) - [:MEMBER] -> () -> [:GRANT] -> (b)
(a) - [:MEMBER] -> () - [:MEMBER] -> () -> [:GRANT] -> (b)
但不是
(a) - [:MEMBER] -> () - [:GRANT] -> () -> [:GRANT] -> (b)
我试过了:
MATCH (a) - [:MEMBER *] -> () - [:GRANT] -> (b)
但它仅在至少有一个成员关系时才有效(例如,()节点必须存在)。
我也尝试过这样的事情:
MATCH (a) - [:MEMBER *] -- [:GRANT] -> (b)
但是他们有语法错误。
有没有办法可选地匹配关系,同时确保链以特定的第二种关系类型结束?
答案 0 :(得分:2)
你非常接近,你需要将变量长度关系的最小值设置为0,如下所示:
MATCH (a) - [:MEMBER *0..] -> () - [:GRANT] -> (b)
您现在有了这个想法,但这里是文档中link部分的{{3}}以防万一。