我写了一个cypher语句,找出所有与Node n
之间有深度关系的节点&lt; 5并限制节点property1 < 100
。
MATCH (n:NodeLable)-[:REL*1..5]-(m:NodeLable)
WHERE m.property1 < 100
return m
但如果我也想限制中间节点的属性,我怎么能修改我的cypher语句?
描述我的目的的一个例子:当上面的cypher返回节点m1,它连接到n时为:(n)-[:REL]-(int1)-[:REL]-(m1)
或(n)-[:REL*1..3]-(int1)-[:REL*1..3]-(m1)
,我怎样才能将限制添加到所有中间节点,如int1.property2 < 50
?
答案 0 :(得分:1)
这样的东西?
MATCH path=(n:NodeLable)-[:REL*1..5]-(m:NodeLable)
WHERE
m.property1 < 100 AND
ALL(node IN nodes(path) WHERE node.property2 < 50)
RETURN m
如果您想从中排除n
,则应指定nodes(path)[1..]
而不是nodes(path)
。如果您要排除m
,可以执行nodes(path)[1..-1]