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

时间:2013-12-01 21:06:40

标签: neo4j cypher

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

由于n有多条路径,因此我收到了重复的节点。 如何返回唯一的节点?

2 个答案:

答案 0 :(得分:3)

你可以做回报。

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

如果你这样做,虽然......也许这对你更好?

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

答案 1 :(得分:2)

对于Neo4j 2.0,这将是最好的,还是?

MATCH p=(s)-[*]->(n:label)
WHERE id(s) = 0
RETURN id(n), n.property 
ORDER BY length(p) asc

请参阅:http://console-test.neo4j.org/r/2ae9x4