我如何消除此 CYPHER 查询中的重复项,该查询返回具有特定标签的所有节点,这些节点按距根的距离排序

use*_*118 2 neo4j cypher

START s=node(0) 
MATCH p=s-[*]->n 
WHERE n:label
RETURN id(n), n.property 
ORDER BY length(p) asc
Run Code Online (Sandbox Code Playgroud)

由于有多个到 n 的路径,因此我返回了重复的节点。我怎样才能返回唯一的节点?

Eve*_*man 5

你可以做 return distinct。

START s=node(0)
MATCH p=(s)-[*]->(n) 
WHERE n:label 
RETURN DISTINCT id(n), n.property  
ORDER BY length(p) asc
Run Code Online (Sandbox Code Playgroud)

但是,如果您这样做……也许这对您更好?

START s=node(0)
MATCH (n:label)
WITH s, n
MATCH p=shortestPath((s)-[*]->(n))
RETURN DISTINCT id(n), n.property 
ORDER BY length(p) asc
Run Code Online (Sandbox Code Playgroud)