Mar*_*ace 15 traversal neo4j cypher
给出如下查询:
START n = node(123)
MATCH p = n-[r:LIKES*..3]->x
RETURN p;
Run Code Online (Sandbox Code Playgroud)
我通过上面的查询得到的结果路径包含循环.
我怎样才能返回简单的路径?
鉴于这个例子:
Mic*_*ger 16
指定路径的唯一性是密码的计划特征.
所以现在我们必须确定路径中没有节点是重复的.
有一个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
Run Code Online (Sandbox Code Playgroud)
所以我做的是:
n
n
length
集合ALL
它必须是每个一个n
请参阅:http://console.neo4j.org/r/dpalbl