サイファーのMATCH
ステートメントを使用すると、特定の基準に一致するデータを見つけることができます。 MATCH
を使用できます データを返すか、データに対して他の操作を実行します。
MATCH
ステートメントは特定の基準に一致するために使用されますが、実際には戻り値ではありません。 データ。 MATCH
からデータを返すには ステートメント、まだRETURN
を使用する必要があります 条項。
ノードを取得する
MATCH
を使用する簡単な例を次に示します。 ノードを取得するステートメント:
MATCH (p:Person) WHERE p.Name = "Devin Townsend" RETURN p
WHERE
句はSQLのWHERE
と同じように機能します 追加の基準を提供することで結果を絞り込むことができるという点で、条項。
ただし、WHERE
を使用しなくても同じ結果を得ることができます 句。ノードの作成に使用したのと同じ表記を指定して、ノードを検索することもできます。
次のコードは、上記のステートメントと同じ結果を提供します。
MATCH (p:Person {Name: "Devin Townsend"}) RETURN p
上記のクエリのいずれかを実行すると、次のノードが表示されます。
ノードをクリックすると、3つのセクションに分割された外側の円が展開されます。それぞれが異なるオプションを表します。
下部のセクションをクリックすると、ノードの関係が展開されます:
関係
MATCH
との関係をトラバースすることもできます 声明。実際、これはNeo4jが本当に得意なことの1つです。
たとえば、 Heavy as a Really Heavy Thingというアルバムをリリースしたアーティストを知りたい場合 、次のクエリを使用できます:
MATCH (a:Artist)-[:RELEASED]->(b:Album) WHERE b.Name = "Heavy as a Really Heavy Thing" RETURN a
これにより、次のノードが返されます:
MATCH
で使用しているパターンを確認できます ステートメントはほとんど自明です。これは、 Heavy as a Really Heavy Thingという名前のアルバムをリリースしたすべてのアーティストと一致します。 。
変数を使用します(つまり、a
およびb
)クエリの後半でそれらを参照できるようにします。クエリの後半で関係を参照する必要がなかったため、関係の変数は提供しませんでした。
また、最初の行は、最初に関係を作成するために使用したのと同じパターンを使用していることに気付くかもしれません。これは、Cypher言語の単純さを際立たせています。異なるコンテキストで同じパターンを使用できます(つまり、データの作成とデータの取得)。
すべてのノードを返す
フィルタリングの詳細を省略するだけで、データベース内のすべてのノードを返すことができます。したがって、次のクエリはデータベース内のすべてのノードを返します。
MATCH (n) RETURN n
これにより、すべてのノードが返されます:
行をクリックすることもできます データを行形式で表示するための側面のアイコン:
すべてのノードを返すときは注意してください。大規模なデータベースでこれを行うと、パフォーマンスに大きな影響を与える可能性があります。意図しない問題を回避するために、結果を制限することをお勧めします。
以下の「結果を制限する」を参照してください。
結果を制限する
LIMIT
を使用する 出力のレコード数を制限します。結果セットの大きさがわからない場合は、これを使用することをお勧めします。
したがって、LIMIT 5
を追加するだけで済みます。 前のステートメントに追加して、出力を5レコードに制限します。
MATCH (n) RETURN n LIMIT 5