Neo4j 对于以双向关系连接的节点,cypher返回两次

Neo4j 对于以双向关系连接的节点,cypher返回两次,neo4j,cypher,Neo4j,Cypher,我有两个节点:(A)、(B),由[:FRIEND]连接 当我运行以下命令时 start n = node(*) match (n)-[r:FRIEND]-(b) return n.name, b.name; 它返回两行: A、 B和B,A 我想知道,如何使它只返回一条记录,因为关系是双向的,A-[:FRIEND]-B和B-[:FRIEND]-A被认为是相同的结果 谢谢。一个窍门是在ID上添加一个,在其中添加一个,这样您也可以按照一致的顺序获得它们: start n = node(*) mat

我有两个节点:(A)、(B),由[:FRIEND]连接

当我运行以下命令时

start n = node(*) match (n)-[r:FRIEND]-(b) return n.name, b.name;
它返回两行: A、 B和B,A

我想知道,如何使它只返回一条记录,因为关系是双向的,A-[:FRIEND]-B和B-[:FRIEND]-A被认为是相同的结果


谢谢。

一个窍门是在ID上添加一个
,在其中添加一个
,这样您也可以按照一致的顺序获得它们:

start n = node(*) 
match (n)-[r:FRIEND]-(b) 
where id(n) < id(b) 
return n.name, b.name;
start n=node(*)
匹配(n)-(r:朋友)-(b)
其中id(n)

如果它们之间存在多个关系(例如,在两个方向上),则可以添加不同的修改器以获得相同的结果:

start n = node(*) 
match (n)-[r:FRIEND]-(b) 
where id(n) < id(b) 
return distinct n.name, b.name;
start n=node(*)
匹配(n)-(r:朋友)-(b)
其中id(n)