LoginSignup
1
0

More than 1 year has passed since last update.

Neo4j Cypherマニュアルv4.4 3:句

Last updated at Posted at 2022-09-22

本章は、Cypherクエリ言語の全ての句について説明します。

管理

これらは、データベース、スキーマ、およびセキュリティの管理に使用される句で構成されます。詳細については、データベース管理およびアクセス制御を参照してください。

リンク 説明
CREATE | DROP | START | STOP DATABASE                       データベースを作成、削除、起動、または停止します。
CREATE | DROP INDEX 特定のラベルとプロパティを持つ全てのノードにインデックスを作成または削除します。
CREATE | DROP CONSTRAINT ノードラベルまたはリレーションシップタイプ、およびプロパティに関連する制約を作成または削除します。
アクセス制御 データベース、グラフ、およびサブグラフのアクセス制御のユーザー、ロール、および権限を管理します。

データのインポート

リンク 説明
LOAD CSV CSVファイルからデータをインポートするときに使用します。
--- USING PERIODIC COMMIT     このクエリーヒントは、LOAD CSVを使用して大量のデータをインポートする際、メモリー不足エラーを起こさないために使用します。

関数とプロシージャのリスト

リンク 説明
SHOW FUNCTIONS 使用可能な関数を一覧表示します。
SHOW PROCEDURES 使用可能な手順を一覧表示します。

複数のグラフ

リンク 説明
USE クエリーまたはクエリーパートを実行するグラフを決定します。
Fabric

句の計画

結果セットで戻す式を定義する句で構成されます。戻された式は全てASを使用して別名にすることができます。

リンク 説明
RETURN ... [AS] クエリー結果セットに含めるものを定義します。
WITH ... [AS]
UNWIND ... [AS] リストを一連の行に展開します。

クエリパーツをチェーン接続し、あるパーツの結果を次のパーツの開始点または基準として使用できるようにパイプ処理します。

句の読み取り

データベースからデータを読み込む句で構成されます。
Cypherクエリ内のデータフローは、キーと値のペア(クエリ内の変数とデータベースから派生した値との間の可能なバインディングのセット)を持つマップの順序なしシーケンスです。このセットは、クエリの後続部分によって洗練され、拡張されます。

説明
MATCH データベースで検索するパターンを指定します。
OPTIONAL MATCH データベース内で検索するパターンを指定し、パターンの欠落部分にはnullsを使用します。
MATCHの詳細

MATCHの詳細

MATCH句は、記述されたパターンを検索するために使用されます。

はじめに

Neo4jがデータベース内で検索するパターンをMATCH句を使用して指定します。これは、データを現在のバインディングセットに取り込むための主要な方法です。Patternsでのパターン自体の仕様については、さらに読む価値があります。

MATCHは多くの場合、MATCHパターンに制約または述語を追加してより具体的にするWHERE部を伴ないます。述語はパターン記述の一部であり、マッチングが行われた後にのみ適用されるフィルタと考えるべきではありません。つまり、WHEREは常に、それが属するMATCH句と一緒に配置する必要があります。

MATCHは、クエリの最初に発生することもあれば、後の方で、もしかするとWITHの後に発生することもあります。もしMATCHが最初の句なら、まだ何もバインドされていません。Neo4jは、句とWHERE部で指定された関連する述語に一致する結果を見つけるための検索を設計します。これには、データベースのスキャン、特定のラベルを持つノードの検索、またはパターンマッチングの開始点を見つけるためのインデックスの検索が含まれます。この検索で見つかったノードとリレーションシップは、バインドされたパターン要素 として使用でき、パスのパターンマッチングに使用できます。また、Neo4jが既知の要素を使用し、そこからさらに未知の要素を見つけるために、その他のMATCH句でも使用できます。

Cypherは宣言型であるため、通常、クエリ自体は検索を実行するために使用するアルゴリズムを指定しません。Neo4jは、開始ノードを見つけてパターンをマッチングするための最善のアプローチを自動的に見つけ出します。WHERE部の述語は、パターンマッチングの前、パターンマッチング中、またはマッチング後に評価されます。ただし、クエリコンパイラの決定に影響を与える場合もあります。インデックスの詳細については、検索性能のためのインデックスのindexを参照してください。ヒントを指定してNeo4jに特定の方法でクエリを解決させる方法については、PlannerヒントとUSINGキーワードを参照してください。

MATCH句で使用されるパターンについてさらに理解するには、パターンを参照してください。

次の例では、次のグラフを使用しています。

基本的なノード検索

すべてのノードを取得する

1つのノードでラベルなしのパターンを指定するだけで、グラフ内のすべてのノードが戻されます。

クエリ

Cypher
MATCH (n)
RETURN n

データベース内のすべてのノードを戻します。

OPTIONAL MATCHの詳細
puts 'Hello, World'

Reading hints

これらの句は、クエリをチューニングするときにプランナのヒントを指定するために使用されます。これらの使い方(およびクエリのチューニング全般)の詳細については、PlannerのヒントとUSINGキーワードを参照してください。

リンク Hint 説明
USING INDEX プランナがどのインデックスを開始点にすべきかを指定するために使用されます。
USING INDEX SEEK プランナに対し、この句にインデックスシークを使用するように指示します。
USING SCAN プランナに対して、インデックスを使用する代わりにラベルスキャン(その後にフィルタリング操作)の実行を強制するために使用されます。
USING JOIN 指定したポイントで結合操作を実行するために使用されます。

下位句の読み取り

読み取り句の一部として動作しなければならない下位句を構成します。

リンク 下位句 説明
WHERE MATCH句またはOPTIONAL MATCH句のパターンに制約を追加したり、WITH句の結果をフィルタします。
WHERE EXISTS { ... } MATCHOPTIONAL MATCH、またはWITH句の結果をフィルタリングするために使用される実存的なサブクエリです。
ORDER BY [ASC[ENDING] | DESC[ENDING]] RETURNまたはWITHの後のサブ句であり、出力を昇順(デフォルト)または降順でソートすることを指定します。
SKIP 出力に行を含めるときに、開始行を定義します。
LIMIT 出力の行数を制限します。

句の読み取り/書き込み

データベースからのデータの読み取りとデータベースへのデータの書き込みの両方を行う句で構成されます。

リンク 説明
MERGE グラフにパターンが存在することを確認します。パターンはすでに存在するか、作成されることになります。
--- ON CREATE MERGEと一緒に使用して、パターンが作成される場合に取るべきアクションを指定します。
--- ON MATCH MERGEと一緒に使用して、パターンが既に存在する場合に取るべきアクションを指定します。
CALL ... [YIELD ... ] データベースにデプロイされたプロシージャを起動し、結果を返します。

セット操作

リンク 説明
UNION 複数のクエリーの結果を1つの結果セットに結合します。重複は削除されます。
UNION ALL 複数のクエリーの結果を1つの結果セットに結合します。重複は保持されます。

サブクエリ句

リンク 説明
CALL { ... } サブクエリを評価します。通常、結合後の処理または集計に使用されます。
CALL { ... } IN TRANSACTIONS サブクエリを個別のトランザクションで評価します。通常、大量のデータを修正またはインポートする場合に使用されます。

トランザクションコマンド

リンク 説明
SHOW TRANSACTIONS 使用可能なトランザクションをリストします。
TERMINATE TRANSACTIONS トランザクションをIDで終了します。

書き込み句

データベースにデータを書き込む句で構成されます。

リンク 説明
CREATE ノードとリレーションシップを作成します。
DELETE ノード、リレーションシップまたはパスを削除します。削除するノードは、関連する全てのリレーションシップも明示的に削除する必要があります。
DETACH DELETE 1つまたは複数のノードを削除します。関連する全てのリレーションシップが自動的に削除されます。
SET ノードのラベルおよびノードとリレーションシップのプロパティを更新します。
REMOVE ノードとリレーションシップからプロパティとラベルを削除します。
FOREACH パスのコンポーネントであるか、集約の結果であるかにかかわらず、リスト内のデータを更新します。
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0