我想测试从节点a到节点b(只有MATCH
语句)的路径中的所有节点,其中深度正在改变(可以是任何数字)。在下面的示例中,深度为2。
START a = node(86)
MATCH p0 = a-[*..2]-b
WHERE (b.attr = 'true') AND (a.attr = 'true')
RETURN p0
我的问题是如何在不知道所需深度的情况下,使用attr = 'true'
语句测试某个属性(MATCH
)的a和b之间的节点。
我发现使用过滤器方法我可以过滤掉所有不需要的节点。 喜欢:
START a = node(86)
MATCH p0 = a-[*..2]-b
RETURN filter(x IN nodes(p0) WHERE x.attr = 'true')
但这不是我需要的,我需要使用MATCH
。
答案 0 :(得分:1)
查看Cypher refcard,特别是List Predicates section。 all()函数应该可以解决问题。
类似的东西:
START a=node(86)
MATCH p0=(a)-[*..2]-(b)
WHERE ALL(node in nodes(p0) WHERE node.attr = true)
RETURN p0
这只匹配模式中所有节点都具有该属性的模式。