鉴于类似以下的查询:
START n = node(123)
MATCH p = n-[r:LIKES*..3]->x
RETURN p;
以上是我与查询得到的结果路径包含循环。
我怎么能只返回简单路径?
鉴于这个例子 :
- 如何避免像重复的节点的路径:[新,睡眠,三一,睡眠,新]
鉴于类似以下的查询:
START n = node(123)
MATCH p = n-[r:LIKES*..3]->x
RETURN p;
以上是我与查询得到的结果路径包含循环。
我怎么能只返回简单路径?
鉴于这个例子 :
指定的唯一路径是暗号的计划功能。
所以现在我们必须确定没有节点的路径重复。
有一个ALL
必须保持一个集合(其中一个路径)的所有元素真正谓语。 并与filter
,你可以提取集合中的元素为一定条件下也是如此。
START neo=node(1)
MATCH path= neo-[r:KNOWS*..4]->other
WHERE ALL(n in nodes(path) where
1=length(filter(m in nodes(path) : m=n)))
RETURN neo, LENGTH(path) AS length, EXTRACT(p in NODES(path) : p.name), other
ORDER BY length
所以我所做的就是:
n
n
length
该集合的 ALL
,它必须为每个n
见: http://console.neo4j.org/r/dpalbl
我对这种解决方法:
START n = node(123), x=node(*)
MATCH p = shortestPath(n-[r:LIKES*..3]->x)
RETURN p;
看到的例子在控制台
在2.3.0,使用以下命令:
MATCH path = (start {id:2})<-[*1..]-(end {id:3})
WHERE ALL(n in nodes(path) where
1 = size(filter(m in nodes(path) where m=n)))
RETURN start, LENGTH(path) AS length, EXTRACT(p in NODES(path) | p.id), end
ORDER BY length