对UNIONed Cypher结果进行分组

时间:2015-06-25 20:53:15

标签: neo4j cypher

我有一个像这样的密码查询可以正常工作:

MATCH path = (start)-[]-(some)-[]-(path)-[]-(end)
RETURN start, end, path
UNION
MATCH path = (start)-[]-(some)-[]-(other)-[]-(path)-[]-(end)
RETURN start, end, path

唯一的问题是,在某些情况下,相同的startend节点可能会匹配两种模式,从而导致重复(相对于startend)。

有一种密码方式吗?

RETURN DISTINCT start, end, COLLECT(path)

对于UNION的结果?有点像SQL子查询吗?

1 个答案:

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

不确定这是否适用于您的情况,但它会为每对开始/结束提供一个结果行。