我在this console中设置了五个节点,以便每个节点[:POINTS_TO]包含所有其他节点。
如何在我的Cypher(2.2.0-M01)中包含{expression},以确保if(a) - [:POINTS_TO] - >(b)在路径中的任何一点都没有实例(a)< - [:POINTS_TO] - (b)也存在于该路径的任何一点。
MATCH p=(a:Temp)-[r:POINTS_TO*1..5]->(b:Temp)
WHERE a=b AND {expression}
RETURN extract(n IN nodes(p)|n.name) AS pseudopath
包含这样的表达式是否意味着查询运行得比没有它更快,因为排列更少,或者编译器是否必须“后处理”过滤器?
感谢,
答案 0 :(得分:2)
我猜你正试图阻止neo4j试图穿越周期性路径。如果是这样,你不需要做任何事情来做到这一点。 Cypher自动生成非循环路径,因为它不允许相同的关系在结果中出现两次。 (从技术上讲,它可以产生一种循环 - 其中起始节点与结束节点相同 - 但这是唯一可能的循环。)