本文へスキップ
BecomeCoder

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

プロパティと別名 ― RETURN p.name AS name、DISTINCT

ブラウザで完結

導入

RETURN で返す列は、そのままだと p.name のような分かりにくい見出しになってしまいます。ここでは結果の整え方を学びます。

説明

AS を使うと、返す列に分かりやすい別名(エイリアス)をつけられます。

MATCH (p:Person {name: 'Alice'})
RETURN p.name AS name, p.born AS birthYear

こうすると、結果の表の見出しが p.name ではなく namep.born ではなく birthYear になり、後でアプリケーションから結果を扱うときにも扱いやすくなります。

重複を取り除きたいときは DISTINCT を使います。

MATCH (a:Person)-[:ACTED_IN]->(:Movie)
RETURN DISTINCT a.name AS actor

このクエリは「1本でも映画に出演したことがある俳優の名前」を、重複なく1人1行で返します。同じ俳優が複数の映画に出演していても、DISTINCT によって名前は1回しか現れません。

なお、(:Movie) のようにリレーションシップの先のノードに変数名をつけない書き方もできます。「Movie ノードであることは条件にしたいが、後で使う必要はない」というときに使う省略記法です。必要な情報だけに変数名をつける、というのもCypherを読みやすく書くコツの一つです。

実際に動かしてみよう

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

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

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