本文へスキップ
BecomeCoder

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

並び替え・件数 ― ORDER BY / LIMIT / SKIP

ブラウザで完結

導入

検索結果を見やすくするには、並び順を揃えたり、件数を絞ったりする必要があります。SQLORDER BYLIMIT に似た機能がCypherにも用意されています。

説明

MATCH (p:Person)
RETURN p.name AS name, p.born AS born
ORDER BY p.born DESC
  • ORDER BY p.bornborn の値が小さい順(昇順)に並べる。
  • ORDER BY p.born DESCDESC をつけると降順(大きい順)になる。複数の列をカンマ区切りで指定すると、優先順位をつけて並べ替えられる。
MATCH (p:Person)
RETURN p.name AS name, p.born AS born
ORDER BY p.born DESC
LIMIT 5

LIMIT 5 は、結果の先頭から5件だけを返します。「最も新しく生まれた5人」を知りたいときなどに、ORDER BY と組み合わせてよく使われます。

さらに SKIP を組み合わせると、「何件目から返すか」を指定できます。

MATCH (p:Person)
RETURN p.name AS name, p.born AS born
ORDER BY p.born DESC
SKIP 5
LIMIT 5

このクエリは「6件目から10件目まで」を返します。SKIPLIMIT の組み合わせは、Webアプリの検索結果を「1ページ目」「2ページ目」と区切って表示する**ページング(ページネーション)**の実装によく使われます。

実際に動かしてみよう

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

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

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