Neo4j 对于以双向关系连接的节点,cypher返回两次
我有两个节点:(A)、(B),由[:FRIEND]连接 当我运行以下命令时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
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)