本文へスキップ
BecomeCoder

Neo4jコース · 第4章 データを検索する · レッスン17

条件で絞り込む ― WHERE

ブラウザで完結

導入

パターンの波括弧に直接書ける条件は「値が一致するか」だけです。「1990年より後に生まれた人」のような比較や、複数条件の組み合わせには WHERE 句を使います。

説明

MATCH (p:Person)
WHERE p.born > 1990
RETURN p.name, p.born

WHERE では、次のような演算子や条件が使えます。

  • 比較演算子: =<>(等しくない)、<<=>>=
  • 論理演算子: ANDORNOT
  • 文字列の条件: STARTS WITH(前方一致)、ENDS WITH(後方一致)、CONTAINS(部分一致)
  • リストに含まれるか: IN
MATCH (p:Person)
WHERE p.born >= 1985 AND p.born < 1995
RETURN p.name, p.born
MATCH (m:Movie)
WHERE m.title STARTS WITH 'The'
RETURN m.title
MATCH (p:Person)
WHERE p.name IN ['Alice', 'Bob', 'Carol']
RETURN p.name

パターンの波括弧内に書く条件({name: 'Alice'})は「完全一致」しか表せませんが、WHERE を使えば範囲・部分一致・複数条件の組み合わせなど、柔軟な絞り込みができます。実務では、単純な一致以外の条件はほぼ WHERE を使うと考えてよいでしょう。

実際に動かしてみよう

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

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

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