4

[: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 つのレコードだけを返すようにできるのでしょうか。

ありがとう。

4

1 に答える 1

9

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;
于 2013-01-19T02:29:44.757 に答える