我有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被认为是相同的结果。
感谢。
答案 0 :(得分:9)
一个技巧是在ID上添加where
,因此您也可以按照一致的顺序获取它们:
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;