見出し画像

Neo4j GraphDBブートキャンプ完全版: 関係性 (セクション7/49)

  • Neo4jのMATCHクローズは、グラフデータベースから関係性を取得してデータを検索する上で重要な要素である。

  • ノード間の接続を見つける様々な方法、関係性のタイプに基づいた結果のフィルタリング、関連情報の抽出などについて説明した。

  • MATCHクローズを活用することで、複雑な質問に答え、データ内の価値ある洞察を発見できる。

はじめに:

このブログ記事では、Neo4jの強力なMATCHクローズについて深く掘り下げます。MATCHクローズは、グラフデータベースから関係性を取得してデータを検索する上で重要な要素です。ノード間の接続を見つける様々な方法、関係性のタイプに基づいた結果のフィルタリング、関連情報の抽出などについて見ていきましょう。それでは始めましょう!

関係性のタイプを取得する:

一般的なタスクの1つは、ノード間の関係性のタイプを取得することです。例えば、トム・ハンクスを表すノードと、彼が接続しているすべての映画ノードの間の関係性のタイプを見つけたいとします。次のCypherクエリを使用できます:

MATCH (t:Person {name: "Tom Hanks"})-[r]-(:Movie) 
RETURN type(r)

このクエリは、トム・ハンクスのノードに一致し、映画ノードへのあらゆる関係をたどり、`type()`関数を使って各関係のタイプを返します。

関係性のタイプに基づくマッチング:

特定の関係性のタイプに基づいてノードを一致させることもできます。ケイトがソーシャルメディアプラットフォームでフォローしているすべての人を見つけましょう。次のクエリを使用します:

MATCH (k:Person {name: "Kate"})-[r:FOLLOWS]->(p:Person)
RETURN p.name

ここでは、Kateノードを一致させ、FOLLOWSの関係性のみを他のPersonノードまでたどり、それらの人の名前を返します。

複数の関係性のタイプを使う:

時には、複数の関係性のタイプで接続されているノードを一致させる必要があります。トニーのすべての家族や親戚を見つけるために、`|`(パイプ)演算子を使うことができます:

MATCH (t:Person {name: "Tony"})-[r:FAMILY_OF|RELATIVE_OF]-(p:Person)
RETURN p.name

このクエリは、トニーと、FAMILY_OFまたはRELATIVE_OFの関係性で接続されているすべてのPersonノードを一致させ、それらの人の名前を返します。

MATCHとCREATEを使って関係性を作成する:

既存のノード間に新しい関係性を形成するために、MATCHとCREATEを一緒に使うことができます。例えば、ロバート・ゼメキスとトム・ハンクスの間に「colleague_of」の関係性を作成するには:

MATCH (z:Person {name: "Robert Zemeckis"}), (t:Person {name: "Tom Hanks"})
CREATE (z)-[:COLLEAGUE_OF]->(t)-[:COLLEAGUE_OF]->(z)
RETURN *

このクエリは、ロバート・ゼメキスとトム・ハンクスのノードを一致させ、それらの間に双方向のCOLLEAGUE_OFの関係性を作成し、更新されたグラフを返します。

パターンに複数の関係性を使う:

より複雑な質問に答えるために、複数の関係性を含むパターンを一致させることができます。トム・ハンクスが出演した映画の監督を見つけるには:

MATCH (t:Person {name: "Tom Hanks"})-[:ACTED_IN]->(m:Movie)<-[:DIRECTED]-(d:Person)
RETURN d.name

このクエリは、トム・ハンクスのノードを一致させ、ACTED_INの関係性を映画ノードまでたどり、次に反対方向のDIRECTEDの関係性を監督ノードまでたどり、彼らの名前を返します。

結論:

Neo4jのMATCHクローズは、グラフデータベースから関係性を探索してデータを取得するための柔軟で強力な方法を提供します。プロパティに基づいてノードを一致させ、特定の関係性のタイプに従い、パターンに複数の関係性を組み合わせることで、複雑な質問をすることができ、データ内の価値ある洞察を発見できます。

MATCHで可能なことの表面しかまだ触れていません。Neo4jの旅を続けていくうちに、この重要なクローズを活用してグラフデータを効果的にトラバースして分析するさらに多くの方法を発見するでしょう。ハッピーグラフィング!

「超本当にドラゴン」へ

この記事が気に入ったらサポートをしてみませんか?