如何在cypher语句中为中间节点添加限制

时间:2016-03-08 11:44:10

标签: neo4j cypher

我写了一个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

1 个答案:

答案 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]