我有一个像这样的密码查询可以正常工作:
MATCH path = (start)-[]-(some)-[]-(path)-[]-(end)
RETURN start, end, path
UNION
MATCH path = (start)-[]-(some)-[]-(other)-[]-(path)-[]-(end)
RETURN start, end, path
唯一的问题是,在某些情况下,相同的start
和end
节点可能会匹配两种模式,从而导致重复(相对于start
和end
)。
RETURN DISTINCT start, end, COLLECT(path)
对于UNION的结果?有点像SQL子查询吗?
答案 0 :(得分:2)
我认为您无法在RETURN
中收集多个UNION
。 GitHub上有一个未解决的问题,请求类似的内容:https://github.com/neo4j/neo4j/issues/2725
如果开始和结束有问题,您可以先MATCH
他们,然后尝试MATCH
不同的路径:
MATCH (start), (end)
// try to match the different paths
OPTIONAL MATCH path_a = (start)-[]-(some)-[]-(path)-[]-(end)
OPTIONAL MATCH path_b = (start)-[]-(some)-[]-(other)-[]-(path)-[]-(end)
RETURN DISTINCT start, end, path_a, path_b
不确定这是否适用于您的情况,但它会为每对开始/结束提供一个结果行。