Neo4j GraphDBブートキャンプ完全版: クエリ技術 (セクション8-12/49)
Neo4jのクエリ技術のうち、オプショナルマッチ、並べ替え、制限、スキップ、和集合について説明。
これらの技術を使用すると、グラフデータベースから必要なデータを柔軟かつ正確に取得できる。
Neo4j開発者はこれらの句を組み合わせて使用することを練習し、マスターすべき。
はじめに:
2024年度版のNeo4j GraphDBブートキャンプ「Zero to Hero」コースのセクション8から12では、グラフデータベースからデータを柔軟な方法で取得できるいくつかの強力なクエリ技術について説明します。これらのセクションのキーコンセプトを見直してみましょう。
セクション8 - オプショナルマッチ:
OPTIONAL MATCHを使用すると、パターンが存在しない場合にクエリが失敗することなく、グラフ内のパターンを検索できます。これは、クエリの一部が一致しなくても、他の部分の結果を返したい場合に便利です。
例えば、映画ノードを一致させ、接続されているノードを任意で一致させ、オプションのマッチで何かが見つかったかどうかに関係なく映画を返すことができます。ただし、複数のOPTIONAL MATCHを使用する場合は注意が必要です。オプションのパターンのいずれかが欠落している場合、クエリは結果を返さないからです。
セクション9 - 並べ替え:
ORDER BY句を使用すると、1つ以上のプロパティに基づいて、クエリの結果を昇順(デフォルト)または降順で並べ替えることができます。結果で返されないプロパティでも並べ替えができます。
便利なヒントとして、複数のプロパティで並べ替えができます。Neo4jは最初のプロパティで並べ替えを行い、そのプロパティの値が同じ行については、指定した2番目のプロパティで並べ替えを行います。これにより、年齢別に並べ替えた後、各年齢グループ内で名前順に並べ替えるなどのことができます。
セクション10 - 制限:
LIMIT句は、返される結果の数を制限します。これは、フィルタリングと並べ替えの後、最初のX個の結果だけを返すのに便利です。興味深いことに、LIMITへの引数は定数である必要はありません。「3*2」のように整数に評価される式でもかまいません。
また、LIMIT 0を使用すると、データを返さずにクエリを実行できます。これは、作成されたノードを印刷せずにデータを作成する場合に便利です。
セクション11 - スキップ:
SKIP句を使用すると、一定数の結果をスキップできます。これは通常、LIMITおよびORDER BYと組み合わせて使用し、結果をページ単位で表示します。例えば、SKIP 10 LIMIT 10とすると、最初の10個の結果をスキップして、次の10個を返します。
LIMITと同様に、SKIPの引数には式を使用できます。SKIPはORDER BYの後、LIMITの前に置くことを忘れないでください。
セクション12 - 和集合:
UNIONを使用すると、複数のクエリの結果を1つの結果セットに結合できます。覚えておくべき重要な点は次のとおりです。
重複を含める場合はUNION ALL、重複を除外する場合はUNIONを使用します。
各クエリが返す列は一致し、同じ順序である必要があります。
列のエイリアス(AS)を使用して、返される列に名前を付けます。
UNION句を追加することで、2つ以上のクエリをUNIONできます。
ORDER BYは最後のUNIONの後に置いて、最終的に結合された結果をソートします。
結論:
これらのセクションでは、Neo4jクエリを微調整するために非常に便利なキーワードについて説明しました。オプションマッチ、並べ替え、制限、スキップ、和集合による結果の結合は、すべてのNeo4j開発者がマスターすべき不可欠なテクニックです。これらの句をさまざまな組み合わせで使用して、グラフデータベースから必要なデータを正確に取得する練習をしましょう。