[:FRIEND] で接続された (A)、(B) の 2 つのノードがあります。
次のコマンドを実行すると、
start n = node(*) match (n)-[r:FRIEND]-(b) return n.name, b.name;
A、B と B、A の 2 つの行を返します。
A -[:FRIEND]-B と B-[:FRIEND]-A は同じ結果と見なされるので、どうすれば 1 つのレコードだけを返すようにできるのでしょうか。
ありがとう。
1 つのトリックはwhere
、ID に a を追加することです。これにより、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;