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

Neo4j 我如何消除这个CYPHER查询中的重复项,该查询返回所有具有特定标签的节点,这些标签按与根的距离排序,neo4j,cypher,Neo4j,Cypher,由于有多条路径指向n,因此返回了重复的节点。 如何返回唯一的节点?您可以返回不同的节点 START s=node(0) MATCH p=s-[*]->n WHERE n:label RETURN id(n), n.property ORDER BY length(p) asc 如果你这么做的话。。。也许这对你更好 START s=node(0) MATCH p=(s)-[*]->(n) WHERE n:label RETURN DISTINCT id(n), n.prop

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

您可以返回不同的节点

START s=node(0) 
MATCH p=s-[*]->n 
WHERE n:label
RETURN id(n), n.property 
ORDER BY length(p) asc
如果你这么做的话。。。也许这对你更好

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

对于Neo4j 2.0来说,这是最好的,或者

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

请参阅:

我尝试了这两个查询,但它们生成了一个错误,无法执行。谢谢。你用的是什么版本的neo?它们对我有用。谢谢你的建议,但即使是这个查询也会产生重复的结果,因为我的节点有多个标签,并且当我使用id(s)=0(在控制台测试中)运行测试查询时,可能有一个中间路径从一个没有标签“label”的节点指向n:label。返回“Trinity”两次。查询:匹配p=(s)-[*]->(n:Crew)其中id(s)=0返回id(n),n。名称按长度排序(p)ASC输出是:1 Morpheus 2 Trinity 2 Trinity 3 Cypher我使用什么查询使Trinity只出现一次?非常感谢。
MATCH p=(s)-[*]->(n:label)
WHERE id(s) = 0
RETURN id(n), n.property 
ORDER BY length(p) asc