2

以下の関係があります

Bob-[:TWINS]-Alice

私はすべての双子を返す必要があります。以下は使用されている暗号ですが、重複を返します

MATCH a-[:TWINS]-b 
RETURN a.name, b.name

これを Neo4j コンソール here で設定しました

重複を返さない方法は? これは関係の方向を含めることで簡単に修正できることはわかっていますが、ここでは方向は関係ありません。重複を避ける方法を考えています。

4

4 に答える 4

3

これを試してください。最初に名前のペアを注文してから、「DISTINCT」を使用して重複を削除します。

MATCH a-[:TWINS]-b 
RETURN DISTINCT CASE WHEN a.name < b.name  THEN a.name + ',' + b.name  ELSE b.name + ',' + a.name END AS result
于 2013-09-17T02:32:01.830 に答える
0

これを行う1つの方法が見つかりましたが、最新バージョンでのみ機能します。以前のバージョンで動作するか、これよりも単純な他のアイデアを探しています。

DISTINCTアイデアは、関係を使用して重複を排除し、関数startnodeendnode関数を使用して、識別された各関係のノードを取得することです

MATCH p=a-[r:TWINS]-b 
WITH DISTINCT r AS rel 
WITH startnode(rel) AS n1, endnode(rel) AS n2 
RETURN n1.name, n2.name
于 2013-09-16T19:35:48.400 に答える
0

リレーションシップには方向性があり、方向を無視するクエリ フォームを使用しています。双子の間に単一の関係があるようにデータを構造化したように見えるので、クエリを単一の方向に制限することで、双子の間の単一の関係を返すことができます:>クエリ内の追加の文字に注意してください。関係は試合のためにその方向にあります。

MATCH a-[:TWINS]->b 
RETURN a.name, b.name
于 2013-09-16T22:00:43.443 に答える