本文へスキップ
BecomeCoder

Neo4jコース · 第3章 Cypher入門 · レッスン12

関係を作る ― (a)-[:KNOWS]->(b) パターン

ブラウザで完結

導入

ノードだけではグラフになりません。ノード同士を線でつないで初めて「つながりのあるデータ」になります。ここではリレーションシップの作り方を学びます。

説明

リレーションシップは -[:TYPE]-> という記法で作ります。矢印の向きが、そのままリレーションシップの向きになります。

CREATE (a:Person {name: 'Alice'})-[:KNOWS]->(b:Person {name: 'Bob'})

このクエリは、Alice ノードと Bob ノードを新規作成しつつ、同時に Alice → Bob:KNOWS(知り合い)というリレーションシップも作成します。

graph LR
    A["(:Person<br/>name:'Alice')"] -- "KNOWS" --> B["(:Person<br/>name:'Bob')"]

すでに存在するノード同士を後から結びたい場合は、先に MATCH で両方のノードを探してから CREATE でリレーションシップだけを作ります(MATCH については次のレッスンで詳しく扱います)。

MATCH (a:Person {name: 'Alice'}), (m:Movie {title: 'The Matrix'})
CREATE (a)-[:ACTED_IN]->(m)

ここでのポイントは、リレーションシップには必ず種類(:KNOWS:ACTED_IN など)と向きがあることです。「AがBを知っている」と「BがAを知っている」は別の事実なので、矢印の向きを意識して書く必要があります。

実際に動かしてみよう

下のエディタに Cypher を書いて「実行」を押すと、ブラウザ内の学習用グラフDBで結果が表示されます(本物のNeo4jではなく、教材の範囲を再現した軽量な自作エンジンです)。最初から「映画と俳優+小さなソーシャルグラフ」が入っているので、MATCH 系の例はそのまま結果が返ります。CREATE / MERGE / SET などで書き換えた状態は積み重なり、「グラフを初期状態に戻す」でいつでもサンプルに戻せます。

Cypher — ブラウザ内で実行(学習用グラフDB)

Cypherクエリを書いて実行できる学習用グラフDBを読み込みます(本物のNeo4jではなく、教材の範囲を再現した軽量な自作エンジンです。映画と俳優の小さなサンプルグラフが最初から入っています)。
スクロールして表示された時点でも自動で読み込まれます。