4

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

当我运行以下命令时,

start n = node(*) match (n)-[r:FRIEND]-(b) return n.name, b.name;

它返回 2 行:A、B 和 B、A。

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

谢谢。

4

1 回答 1

9

一个技巧是where在 ID 上添加一个,因此您也可以以一致的顺序获得它们:

start n = node(*) 
match (n)-[r:FRIEND]-(b) 
where id(n) < id(b) 
return n.name, b.name;

http://console.neo4j.org/r/1ry0ga

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

start n = node(*) 
match (n)-[r:FRIEND]-(b) 
where id(n) < id(b) 
return distinct n.name, b.name;
于 2013-01-19T02:29:44.757 回答