Neo4j-quick-guide

提供:Dev Guides
移動先:案内検索

Neo4j-概要

Neo4jは、Javaテクノロジを使用して開発された世界有数のオープンソースグラフデータベースです。 非常にスケーラブルでスキーマフリーです(NoSQL)。

グラフデータベースとは

グラフは、オブジェクトのいくつかのペアがリンクで接続されているオブジェクトのセットの図的表現です。 ノード(頂点)と関係(エッジ)の2つの要素で構成されます。

グラフデータベースは、グラフ形式でデータをモデル化するために使用されるデータベースです。 ここでは、グラフのノードはエンティティを表し、関係はこれらのノードの関連付けを表します。

人気のあるグラフデータベース

Neo4jは人気のあるグラフデータベースです。 他のグラフデータベースは、Oracle NoSQLデータベース、OrientDB、HypherGraphDB、GraphBase、InfiniteGraph、およびAllegroGraphです。

グラフデータベースを使用する理由

今日、データのほとんどは異なるオブジェクト間の関係の形で存在し、多くの場合、データ間の関係はデータ自体よりも価値があります。

リレーショナルデータベースは、同じタイプのデータを格納する複数のレコードを持つ高度に構造化されたデータを格納するため、構造化データの格納に使用でき、データ間の関係は格納しません。

他のデータベースとは異なり、グラフデータベースは関係と接続をファーストエンティティとして保存します。

グラフデータベースのデータモデルは、他のデータベースと比較して単純であり、OLTPシステムで使用できます。 トランザクションの整合性や運用の可用性などの機能を提供します。

RDBMS対グラフデータベース

以下は、リレーショナルデータベースとグラフデータベースを比較する表です。

Sr.No RDBMS Graph Database
1 Tables Graphs
2 Rows Nodes
3 Columns and Data Properties and its values
4 Constraints Relationships
5 Joins Traversal

Neo4jの利点

Neo4jの利点は次のとおりです。

  • 柔軟なデータモデル-Neo4jは、柔軟でシンプルかつ強力なデータモデルを提供します。これは、アプリケーションや業界に応じて簡単に変更できます。
  • リアルタイムの洞察-Neo4jは、リアルタイムのデータに基づいて結果を提供します。
  • 高可用性-Neo4jは、トランザクションが保証された大規模なエンタープライズリアルタイムアプリケーションで高可用性を提供します。
  • 接続および半構造データ-Neo4jを使用すると、接続および半構造データを簡単に表現できます。
  • 簡単な検索-Neo4jを使用すると、他のデータベースと比較して、接続されたデータをより速く表現するだけでなく、簡単に検索(トラバース/ナビゲート)することもできます。
  • * Cypherクエリ言語*-Neo4jは、ascii-art構文を使用してグラフを視覚的に表現する宣言クエリ言語を提供します。 この言語のコマンドは人間が読める形式であり、非常に簡単に習得できます。
  • 結合なし-Neo4jを使用すると、結合またはインデックスなしで隣接ノードまたは関係の詳細を取得するのが非常に簡単なので、接続/関連データを取得するために複雑な結合を必要としません。

Neo4jの機能

Neo4jの注目すべき機能は次のとおりです-

  • データモデル(柔軟なスキーマ)-Neo4jは、ネイティブプロパティグラフモデルという名前のデータモデルに従います。 ここで、グラフにはノード(エンティティ)が含まれており、これらのノードは相互に接続されています(関係によって示されています)。 ノードと関係は、プロパティと呼ばれるキーと値のペアでデータを保存します。 + Neo4jでは、固定スキーマに従う必要はありません。 要件ごとにプロパティを追加または削除できます。 また、スキーマの制約も提供します。
  • * ACIDプロパティ*-Neo4jは、完全なACID(原子性、一貫性、分離、および耐久性)ルールをサポートしています。
  • スケーラビリティと信頼性-クエリの処理速度とデータの整合性に影響を与えることなく、読み取り/書き込みの数とボリュームを増やすことで、データベースをスケーリングできます。 Neo4jは、データの安全性と信頼性のための*レプリケーション*のサポートも提供します。
  • * Cypherクエリ言語*-Neo4jは、Cypherとして知られる強力な宣言型クエリ言語を提供します。 グラフの描画にASCIIアートを使用します。 Cypherは簡単に習得でき、Joinsなどの複雑なクエリを使用せずにデータ間の関係を作成および取得するために使用できます。
  • ビルトインウェブアプリケーション-Neo4jはビルトイン* Neo4jブラウザ*ウェブアプリケーションを提供します。 これを使用して、グラフデータを作成およびクエリできます。
  • ドライバー-Neo4jは以下で動作します-
  • Java、Spring、Scalaなどのプログラミング言語で動作するREST API
  • Node JSなどのUI MVCフレームワークで動作するJavaスクリプト。
  • Javaアプリケーションを開発するために、Cypher APIとNative Java APIの2種類のJava APIをサポートしています。 これらに加えて、MongoDB、Cassandraなどの他のデータベースを使用することもできます。
  • インデックス作成-Neo4jは、Apache Lucenceを使用してインデックスをサポートします。

Neo4j-データモデル

Neo4jプロパティグラフデータモデル

Neo4jグラフデータベースは、プロパティグラフモデルに従ってデータを保存および管理します。

以下は、プロパティグラフモデルの主要な機能です-

  • モデルは、ノード、関係、プロパティのデータを表します
  • プロパティはキーと値のペアです
  • ノードは円を使用して表され、関係は矢印キーを使用して表されます
  • 関係には方向があります:単方向および双方向
  • 各関係には、「開始ノード」または「開始ノード」および「終了ノード」または「終了ノード」が含まれます。
  • ノードと関係の両方にプロパティが含まれています
  • 関係はノードを接続します

プロパティグラフデータモデルでは、関係は方向性がある必要があります。 指示なしで関係を作成しようとすると、エラーメッセージがスローされます。

Neo4jでも、関係は方向性を持つ必要があります。 指示なしに関係を作成しようとすると、Neo4jは「関係は方向性があるはずです」というエラーメッセージをスローします。

Neo4jグラフデータベースは、すべてのデータをノードと関係に保存します。 Neo4jデータベースデータを保存するために、追加のRRBMSデータベースもSQLデータベースも必要ありません。 グラフ形式でデータをネイティブ形式で保存します。

Neo4jはネイティブGPE(グラフ処理エンジン)を使用して、ネイティブグラフストレージ形式で動作します。

Graph DB Data Modelの主要な構成要素は次のとおりです-

  • ノード
  • 関係
  • プロパティ

以下は、プロパティグラフの簡単な例です。

プロパティグラフ

ここでは、円を使用してノードを表しました。 関係は矢印を使用して表されます。 関係は方向性です。 ノードのデータは、プロパティ(キーと値のペア)の観点から表現できます。 この例では、ノードのサークル内で各ノードのIdプロパティを表しています。

Neo4j-環境設定

この章では、exeファイルを使用してNeo4jをシステムにインストールする方法について説明します。

Windows exeファイルを使用したNeo4jデータベースサーバーのセットアップ

Neo4jをシステムにダウンロードするには、以下の手順に従ってください。

ホームページ

  • ステップ2 *-上記のスクリーンショットで強調表示されているように、このページの右上には[ダウンロード]ボタンがあります。 クリックして。
  • ステップ3 *-これにより、Neo4jのコミュニティエディションとエンタープライズエディションをダウンロードできるダウンロードページにリダイレクトされます。 それぞれのボタンをクリックして、ソフトウェアのコミュニティ版をダウンロードします。

ダウンロードページ

  • ステップ4 *-これにより、異なるオペレーティングシステムと互換性のあるNeo4jソフトウェアのコミュニティバージョンをダウンロードできるページに移動します。 目的のオペレーティングシステムに対応するファイルをダウンロードします。

各オペレーティングシステム

これにより、次のスクリーンショットに示すように、 neo4j-community_windows-x64_3_1_1.exe という名前のファイルがシステムにダウンロードされます。

コミュニティウィンドウ

  • ステップ5 *-exeファイルをダブルクリックしてNeo4jサーバーをインストールします。

Exe File

  • ステップ6 *-ライセンス契約に同意して、インストールを続行します。 プロセスの完了後、Neo4jがシステムにインストールされていることを確認できます。

サーバーの起動

  • ステップ1 *-Windowsのスタートメニューをクリックし、Neo4jのスタートメニューショートカットをクリックしてNeo4jサーバーを起動します。

サーバーの起動

  • ステップ2 *-ショートカットをクリックすると、Neo4j Communityエディションのウィンドウが表示されます。 デフォルトでは、c:\ Users \ [username] \ Documents \ Neo4j \ default.graphdbが選択されます。 必要に応じて、パスを別のディレクトリに変更できます。

ショートカット

  • ステップ3 *-「開始」ボタンをクリックして、Neo4jサーバーを開始します。

スタートボタン

サーバーが起動すると、次のスクリーンショットに示すように、データベースディレクトリが設定されていることを確認できます。

データベースディレクトリ

Neo4jでの作業

前の章で説明したように、neo4jはNeo4jで動作する組み込みのブラウズアプリケーションを提供します。 URL http://localhost:7474/ を使用してNeo4jにアクセスできます。

ワーキング

Neo4j-ビルディングブロック

Neo4jグラフデータベースには、次のビルディングブロックがあります-

  • ノード
  • プロパティ
  • 関係
  • ラベル
  • データブラウザ

Node

ノードはグラフの基本単位です。 次の図に示すように、キーと値のペアを持つプロパティが含まれています。

ノード

ここでは、Node Name = "Employee"であり、キーと値のペアとして一連のプロパティが含まれています。

プロパティ

プロパティは、グラフノードと関係を記述するキーと値のペアです。

Key = Value

ここで、キーは文字列で、値はNeo4jデータ型を使用して表すことができます。

関係

関係は、グラフデータベースのもう1つの主要な構成要素です。 次の図に示すように、2つのノードを接続します。

関係

ここで、EmpとDeptは2つの異なるノードです。 「WORKS_FOR」は、EmpノードとDeptノード間の関係です。

EmpからDeptへの矢印マークが示すように、この関係は次のように説明します-

Emp WORKS_FOR Dept

各関係には、1つの開始ノードと1つの終了ノードが含まれます。

ここで、「Emp」は開始ノード、「Dept」は終了ノードです。

この関係矢印マークは「Emp」ノードから「Dept」ノードへの関係を表すため、この関係は「Incoming Relationship」から「Dept」ノードおよび「Outgoing Relationship」から「Emp」ノードとして知られています。

ノードと同様に、関係にもキーと値のペアとしてプロパティを含めることができます。

プロパティ

ここで、「WORKS_FOR」関係には、キーと値のペアとして1つのプロパティがあります。

Id = 123

これは、この関係のIDを表します。

ラベル

ラベルは、共通名を一連のノードまたは関係に関連付けます。 ノードまたは関係には、1つ以上のラベルを含めることができます。 既存のノードまたは関係に新しいラベルを作成できます。 既存のノードまたは関係から既存のラベルを削除できます。

前の図から、2つのノードがあることがわかります。

左側のノードには「Emp」というラベルがあり、右側のノードには「Dept」というラベルがあります。

これら2つのノード間の関係には、ラベル「WORKS_FOR」もあります。

注意-Neo4jは、ノードまたは関係のプロパティにデータを保存します。

Neo4jデータブラウザー

Neo4jをインストールしたら、次のURLを使用してNeo4j Data Browserにアクセスできます。

http://localhost:7474/browser/

データブラウザ

Neo4j Data Browserは、CQLコマンドを実行して出力を表示するために使用されます。

ここでは、ドルプロンプトですべてのCQLコマンドを実行する必要があります。 "$"

ドル記号の後にコマンドを入力し、「実行」ボタンをクリックしてコマンドを実行します。

Neo4j Database Serverと対話し、ドルプロンプトのすぐ下に結果を取得して表示します。

「VIビュー」ボタンを使用して、結果を図形式で表示します。 上の図は、「UIビュー」形式の結果を示しています。

[グリッドビュー]ボタンを使用して、結果をグリッドビューで表示します。 次の図は、同じ結果を「グリッドビュー」形式で示しています。

グリッドビュー

「グリッドビュー」を使用してクエリ結果を表示すると、2つの異なる形式でファイルにエクスポートできます。

CSV

[CSVのエクスポート]ボタンをクリックして、結果をcsvファイル形式でエクスポートします。

CSV

JSON

[JSONのエクスポート]ボタンをクリックして、結果をJSONファイル形式でエクスポートします。

Json

ただし、「UIビュー」を使用してクエリ結果を表示する場合、JSONを1つの形式のみでファイルにエクスポートできます:JSON

Neo4j CQL-はじめに

CQLはCypher Query Languageの略です。 Oracle Databaseにクエリ言語SQLがあるように、Neo4jにはクエリ言語としてCQLがあります。

Neo4j CQL

  • Neo4jグラフデータベースのクエリ言語です。
  • 宣言的なパターンマッチング言語です。
  • SQLのような構文に従います。
  • 構文は非常にシンプルで、人間が読める形式です。

Oracle SQLのように

  • Neo4j CQLには、データベース操作を実行するコマンドがあります。
  • Neo4j CQLは、非常に複雑なクエリを簡単に作成するために、WHERE、ORDER BYなどの多くの句をサポートしています。 *Neo4j CQLは、String、Aggregationなどの機能をサポートしています。 それらに加えて、いくつかの関係関数もサポートしています。

Neo4j CQL句

Neo4j* C ypher Q uery L *anguageの読み取り句は次のとおりです-

Sr.No Read Clauses Usage
1 MATCH This clause is used to search the data with a specified pattern.
2 OPTIONAL MATCH This is the same as match, the only difference being it can use nulls in case of missing parts of the pattern.
3 WHERE This clause id is used to add contents to the CQL queries.
4 START This clause is used to find the starting points through the legacy indexes.
5 LOAD CSV This clause is used to import data from CSV files.

Neo4j* C ypher Q uery L *anguageの書き込み句は次のとおりです-

Sr.No Write Clause Usage
1 CREATE This clause is used to create nodes, relationships, and properties.
2 MERGE This clause verifies whether the specified pattern exists in the graph. If not, it creates the pattern.
3 SET This clause is used to update labels on nodes, properties on nodes and relationships.
4 DELETE This clause is used to delete nodes and relationships or paths etc. from the graph.
5 REMOVE This clause is used to remove properties and elements from nodes and relationships.
6 FOREACH This class is used to update the data within a list.
7 CREATE UNIQUE Using the clauses CREATE and MATCH, you can get a unique pattern by matching the existing pattern and creating the missing one.
8 Importing CSV files with Cypher Using Load CSV you can import data from .csv files.

Neo4j* C ypher Q uery L *anguageの一般的な条項は次のとおりです-

Sr.No General Clauses Usage
1 RETURN This clause is used to define what to include in the query result set.
2 ORDER BY This clause is used to arrange the output of a query in order. It is used along with the clauses* RETURN or WITH*.
3 LIMIT This clause is used to limit the rows in the result to a specific value.
4 SKIP This clause is used to define from which row to start including the rows in the output.
5 WITH This clause is used to chain the query parts together.
6 UNWIND This clause is used to expand a list into a sequence of rows.
7 UNION This clause is used to combine the result of multiple queries.
8 CALL This clause is used to invoke a procedure deployed in the database.

Neo4j CQL関数

以下は、頻繁に使用されるNeo4j CQL関数です-

Sr.No CQL Functions Usage
1 String They are used to work with String literals.
2 Aggregation They are used to perform some aggregation operations on CQL Query results.
3 Relationship They are used to get details of relationships such as startnode, endnode, etc.

すべてのNeo4j CQLコマンド、句と関数の構文、使用方法、および例については、以降の章で詳しく説明します。

Neo4j CQLデータ型

これらのデータ型はJava言語に似ています。 ノードまたは関係のプロパティを定義するために使用されます。

Neo4j CQLは、次のデータ型をサポートしています-

Sr.No CQL Data Type Usage
1 Boolean It is used to represent Boolean literals: true, false.
2 byte It is used to represent 8-bit integers.
3 short It is used to represent 16-bit integers.
4 int It is used to represent 32-bit integers.
5 long It is used to represent 64-bit integers.
6 float It is used to represent 32-bit floating-point numbers.
7 double It is used to represent 64-bit floating-point numbers.
8 char It is used to represent 16-bit characters.
9 String It is used to represent Strings.

CQL演算子

以下は、Neo4j Cypher Query言語でサポートされている演算子のリストです。

Sr.No Type Operators
1 Mathematical +, -, *,/, %, ^
2 Comparison +, <>, <, >, ⇐, >=
3 Boolean AND, OR, XOR, NOT
4 String +
5 List +, IN, [X], [X…..Y]
6 Regular Expression =-
7 String matching STARTS WITH, ENDS WITH, CONSTRAINTS

Neo4j CQLのブール演算子

Neo4jは、複数の条件をサポートするためにNeo4j CQL WHERE句で使用する次のブール演算子をサポートしています。

Sr.No Boolean Operators Description
1 AND It is a Neo4j CQL keyword to support AND operation. It is like SQL AND operator.
2 OR It is a Neo4j CQL keyword to support OR operation. It is like SQL AND operator.
3 NOT It is a Neo4j CQL keyword to support NOT operation. It is like SQL AND operator.
4 XOR It is a Neo4j CQL keyword to support XOR operation. It is like SQL AND operator.

Neo4j CQLの比較演算子

Neo4jは、条件をサポートするためにNeo4j CQL WHERE句で使用する次の比較演算子をサポートしています。

Sr.No Boolean Operators Description
1 = It is a Neo4j CQL "Equal To" operator.
2 < > It is a Neo4j CQL "Not Equal To" operator.
3 < It is a Neo4j CQL "Less Than" operator.
4 > It is a Neo4j CQL "Greater Than" operator.
5 It is a Neo4j CQL "Less Than Or Equal To" operator.
6 > = It is a Neo4j CQL "Greater Than Or Equal To" operator.

Neo4j-cql-creating-nodes

Neo4j CQL-関係の作成

Noe4jでは、関係は、グラフの2つのノードを接続する要素です。 これらの関係には、データの方向、タイプ、およびフォームパターンがあります。 この章では、次の方法を説明します-

  • 関係を作成する
  • 既存のノード間の関係を作成する
  • ラベルとプロパティを使用して関係を作成する

関係を作成する

CREATE句を使用して関係を作成できます。 次の構文に示すように、ハイフン「-」と矢印「→」の間に配置される関係の方向に応じて、角カッコ「[]」内の関係を指定します。

構文

以下は、CREATE句を使用して関係を作成する構文です。

CREATE (node1)-[:RelationshipType]->(node2)

まず、データベースに2つのノードIndとDhawanを作成します(以下を参照)。

CREATE (Dhawan:player{name: "Shikar Dhawan", YOB: 1985, POB: "Delhi"})
CREATE (Ind:Country {name: "India"})

今、これらの2つのノードの間に BATSMAN_OF という名前の関係を作成します-

CREATE (Dhawan)-[r:BATSMAN_OF]->(Ind)

最後に、両方のノードを返して、作成された関係を確認します。

RETURN Dhawan, Ind

ブラウザアプリ

ドルプロンプトに目的のクエリをコピーして貼り付け、次のスクリーンショットで強調表示されている(クエリを実行する)再生ボタンを押します。

強調表示されたクエリ

結果

実行すると、次の結果が得られます。

実行中

既存のノード間の関係の作成

*MATCH* 句を使用して、既存のノード間に関係を作成することもできます。

構文

MATCH句を使用して関係を作成する構文は次のとおりです。

MATCH (a:LabeofNode1), (b:LabeofNode2)
   WHERE a.name = "nameofnode1" AND b.name = " nameofnode2"
CREATE (a)-[: Relation]->(b)
RETURN a,b

次に、match句を使用して関係を作成するサンプルのCypherクエリを示します。

MATCH (a:player), (b:Country) WHERE a.name = "Shikar Dhawan" AND b.name = "India"
CREATE (a)-[r: BATSMAN_OF]->(b)
RETURN a,b

上記のクエリを実行するには、次の手順を実行します。

ステップ1 *-Neo4jデスクトップアプリを開き、Neo4jサーバーを起動します。 次のスクリーンショットに示すように、URL *http://localhost:7474/ を使用して、Neo4jの組み込みブラウザーアプリを開きます。

ブラウザアプリ

  • ステップ2 *-目的のクエリをコピーしてドルプロンプトに貼り付け、次のスクリーンショットで強調表示されている(クエリを実行する)再生ボタンを押します。

既存のノード

結果

実行すると、次の結果が得られます。

実行中

ラベルとプロパティとの関係の作成

CREATE句を使用して、ラベルおよびプロパティとの関係を作成できます。

構文

以下は、CREATE句を使用してラベルとプロパティとの関係を作成する構文です。

CREATE (node1)-[label:Rel_Type {key1:value1, key2:value2, . . . n}]-> (node2)

次に、ラベルとプロパティとの関係を作成するサンプルサイファークエリを示します。

MATCH (a:player), (b:Country) WHERE a.name = "Shikar Dhawan" AND b.name = "India"
CREATE (a)-[r:BATSMAN_OF {Matches:5, Avg:90.75}]->(b)
RETURN a,b

上記のクエリを実行するには、次の手順を実行します-

ステップ1 *-Neo4jデスクトップアプリを開き、Neo4jサーバーを起動します。 次のスクリーンショットに示すように、URL *http://localhost:7474/ を使用して、Neo4jの組み込みブラウザーアプリを開きます。

ブラウザアプリ

  • ステップ2 *-目的のクエリをコピーしてドルプロンプトに貼り付け、次のスクリーンショットで強調表示されている(クエリを実行する)再生ボタンを押します。

ラベルプロパティ

結果

実行すると、次の結果が得られます。

実行中

完全なパスを作成する

Neo4jでは、パスは連続的な関係を使用して形成されます。 create句を使用してパスを作成できます。

構文

以下は、CREATE句を使用してNeo4jでパスを作成する構文です。

CREATE p = (Node1 {properties})-[:Relationship_Type]->
   (Node2 {properties})[:Relationship_Type]->(Node3 {properties})
RETURN p

上記のクエリを実行するには、次の手順を実行します-

ステップ1 *-Neo4jデスクトップアプリを開き、Neo4jサーバーを起動します。 次のスクリーンショットに示すように、URL *http://localhost:7474/ を使用して、Neo4jの組み込みブラウザーアプリを開きます。

ブラウザアプリ

  • ステップ2 *-目的のクエリをコピーしてドルプロンプトに貼り付け、次のスクリーンショットで強調表示されている(クエリを実行する)再生ボタンを押します。

チャンピオンズトロフィー

結果

実行すると、次の結果が得られます。

結果

Neo4j-マージコマンド

MERGEコマンドは、CREATEコマンドとMATCHコマンドの組み合わせです。

Neo4j CQL MERGEコマンドは、グラフ内の特定のパターンを検索します。 存在する場合は、結果を返します。

グラフに存在しない場合は、新しいノード/関係を作成し、結果を返します。

この章では、次の方法を学習します-

  • ノードをラベルとマージする
  • ノードとプロパティをマージする
  • OnCreateおよびOnMatch
  • 関係を統合する

構文

MERGEコマンドの構文は次のとおりです。

MERGE (node: label {properties . . . . . . . })

このセクションの例に進む前に、データベースにラベルDhawanとIndの2つのノードを作成します。 以下に示すように、DhawanからIndへのタイプ「BATSMAN_OF」の関係を作成します。

CREATE (Dhawan:player{name: "Shikar Dhawan", YOB: 1985, POB: "Delhi"})
CREATE (Ind:Country {name: "India"})
CREATE (Dhawan)-[r:BATSMAN_OF]->(Ind)

ノードとラベルのマージ

MERGE句を使用して、ラベルに基づいてデータベース内のノードをマージできます。 ラベルに基づいてノードをマージしようとすると、Neo4jは指定されたラベルを持つノードが存在するかどうかを確認します。 そうでない場合、現在のノードが作成されます。

構文

以下は、ラベルに基づいてノードをマージする構文です。

MERGE (node:label) RETURN node

例1

次に、ノードをNeo4jにマージするサンプルサイファークエリを示します(ラベルに基づいて)。 このクエリを実行すると、Neo4jはラベルが player のノードがあるかどうかを確認します。 そうでない場合は、「Jadeja」という名前のノードを作成して返します。

指定されたラベルを持つノードが存在する場合、Neo4jはそれらすべてを返します。

MERGE (Jadeja:player) RETURN Jadeja

上記のクエリを実行するには、次の手順を実行します-

ステップ1 *-Neo4jデスクトップアプリを開き、Neo4jサーバーを起動します。 次のスクリーンショットに示すように、URL *http://localhost:7474/ を使用して、Neo4jの組み込みブラウザーアプリを開きます。

ブラウザアプリ

  • ステップ2 *-目的のクエリをコピーしてドルプロンプトに貼り付け、次のスクリーンショットで強調表示されている(クエリを実行する)再生ボタンを押します。

マージ

結果

実行すると、次の結果が得られます。 データベースに「player」というラベルを持つ「Dhawan」という名前のノードがすでに作成されているため、Neo4jは次のスクリーンショットに示すようにそれを返します。

ダワンプレーヤー

例2

ここで、「CT2013」という名前のノードとTournamentという名前のラベルをマージしてみてください。 このラベルを持つノードがないため、Neo4jは指定された名前のノードを作成して返します。

MERGE (CT2013:Tournament{name: "ICC Champions Trophy 2013"})
RETURN CT2013, labels(CT2013)

上記のクエリを実行するには、次の手順を実行します-

ステップ1 *-Neo4jデスクトップアプリを開き、Neo4jサーバーを起動します。 次のスクリーンショットに示すように、URL *http://localhost:7474/ を使用して、Neo4jの組み込みブラウザーアプリを開きます。

ブラウザアプリ

  • ステップ2 *-目的のクエリをコピーしてドルプロンプトに貼り付け、次のスクリーンショットで強調表示されている(クエリを実行する)再生ボタンを押します。

マージノード

結果

実行すると、次の結果が得られます。 説明したように、指定されたラベル(トーナメント)を持つノードがないため。 Neo4jは、次のスクリーンショットに示すように、指定されたノードを作成して返します。

トーナメント

ノードとプロパティのマージ

ノードを一連のプロパティとマージすることもできます。 これを行うと、Neo4jは、プロパティを含め、指定されたノードに等しい一致を検索します。 見つからない場合は作成します。

構文

以下は、プロパティを使用してノードをマージする構文です。

MERGE (node:label {key1:value, key2:value, key3:value . . . . . . . . })

以下は、プロパティを使用してノードをマージするサンプルサイファークエリです。 このクエリは、プロパティとラベルを使用して「jadeja」という名前のノードをマージしようとします。 正確なラベルとプロパティを持つそのようなノードはないので、Neo4jはそれを作成します。

MERGE (Jadeja:player {name: "Ravindra Jadeja", YOB: 1988, POB: "NavagamGhed"})
RETURN Jadeja

上記のクエリを実行するには、次の手順を実行します-

ステップ1 *-Neo4jデスクトップアプリを開き、Neo4jサーバーを起動します。 次のスクリーンショットに示すように、URL *http://localhost:7474/ を使用して、Neo4jの組み込みブラウザーアプリを開きます。

ブラウザアプリ

  • ステップ2 *-目的のクエリをコピーしてドルプロンプトに貼り付け、次のスクリーンショットで強調表示されている(クエリを実行する)再生ボタンを押します。

結合プロパティ

結果

実行すると、次の結果が得られます。 前述のように、指定されたラベルとプロパティを持つノードは存在しないため、次のスクリーンショットに示すように作成されます。

プロパティ結果

OnCreateおよびOnMatch

マージクエリを実行するたびに、ノードが一致するか作成されます。 on createおよびon matchを使用して、ノードが作成または一致したかどうかを示すプロパティを設定できます。

構文

以下は、 OnCreate および OnMatch 句の構文です。

MERGE (node:label {properties . . . . . . . . . . .})
ON CREATE SET property.isCreated ="true"
ON MATCH SET property.isFound ="true"

次に、Neo4jでの OnCreate および OnMatch 句の使用法を示すサンプルサイファークエリを示します。 指定されたノードがデータベースにすでに存在する場合、ノードは一致し、キーと値のペアisFound = "true"のプロパティがノードに作成されます。

指定されたノードがデータベースに存在しない場合、ノードが作成され、その中にキーと値のペアisCreated = "true"を持つプロパティが作成されます。

MERGE (Jadeja:player {name: "Ravindra Jadeja", YOB: 1988, POB: "NavagamGhed"})
ON CREATE SET Jadeja.isCreated = "true"
ON MATCH SET Jadeja.isFound = "true"
RETURN Jadeja

上記のクエリを実行するには、次の手順を実行します-

ステップ1 *-Neo4jデスクトップアプリを開き、Neo4jサーバーを起動します。 次のスクリーンショットに示すように、URL *http://localhost:7474/ を使用して、Neo4jの組み込みブラウザーアプリを開きます。

ブラウザアプリ

  • ステップ2 *-目的のクエリをコピーしてドルプロンプトに貼り付け、次のスクリーンショットで強調表示されている(クエリを実行する)再生ボタンを押します。

マッチセット

結果

実行すると、次の結果が得られます。 説明したように、詳細が指定されたノードはないため、次のスクリーンショットに示すように、Neo4jは isFound プロパティとともにノードを作成しました。

Oncreate Result

関係をマージする

ノードと同様に、MERGE句を使用して関係をマージすることもできます。

次に、Neo4jのMATCH句を使用して関係をマージするサンプルサイファークエリを示します。 このクエリは、ノード「ind」(ラベル:国と名前:インド)とICC13(ラベル:トーナメントと名前:ICC Champions Trophy 2013)間の WINNERS_OF という名前の関係をマージしようとします。

そのような関係は存在しないため、Neo4jは関係を作成します。

MATCH (a:Country), (b:Tournament)
   WHERE a.name = "India" AND b.name = "ICC Champions Trophy 2013"
   MERGE (a)-[r:WINNERS_OF]->(b)
RETURN a, b

上記のクエリを実行するには、次の手順を実行します-

ステップ1 *-Neo4jデスクトップアプリを開き、Neo4jサーバーを起動します。 次のスクリーンショットに示すように、URL *http://localhost:7474/ を使用して、Neo4jの組み込みブラウザーアプリを開きます。

ブラウザアプリ

  • ステップ2 *-目的のクエリをコピーしてドルプロンプトに貼り付け、次のスクリーンショットで強調表示されている(クエリを実行する)再生ボタンを押します。

受賞者リスト

結果

実行すると、次の結果が得られます。 指定された関係はデータベースに存在しないため、Neo4jは次のスクリーンショットに示すように関係を作成します。

関係マージ

同様に、複数の関係と無向の関係もマージできます。

Neo4j-セット句

Set句を使用すると、既存のノードまたは関係に新しいプロパティを追加したり、既存のプロパティ値を追加または更新したりできます。

この章では、次の方法について説明します-

  • プロパティを設定する
  • プロパティを削除する
  • 複数のプロパティを設定する
  • ノードにラベルを設定する
  • ノードに複数のラベルを設定する

プロパティを設定する

SET句を使用して、ノードに新しいプロパティを作成できます。

構文

以下は、プロパティを設定するための構文です。

MATCH (node:label{properties . . . . . . . . . . . . . . })
SET node.property = value
RETURN node

例に進む前に、以下に示すように、まずDhawanという名前のノードを作成します。

CREATE (Dhawan:player{name: "shikar Dhawan", YOB: 1985, POB: "Delhi"})

以下は、“ highestscore” _という名前で値“ 187” _のプロパティを作成するサンプルサイファークエリです。

MATCH (Dhawan:player{name: "shikar Dhawan", YOB: 1985, POB: "Delhi"})
SET Dhawan.highestscore = 187
RETURN Dhawan

上記のクエリを実行するには、次の手順を実行します-

ステップ1 *-Neo4jデスクトップアプリを開き、Neo4jサーバーを起動します。 次のscrenshotに示すように、URL *http://localhost:7474/ を使用してNeo4jの組み込みブラウザーアプリを開きます。

ブラウザアプリ

  • ステップ2 *-目的のクエリをコピーしてドルプロンプトに貼り付け、次のスクリーンショットで強調表示されている(クエリを実行する)再生ボタンを押します。

マッチプレイヤー

結果

実行すると、次の結果が得られます。 ここでは、キーと値のペアがhighestscore/187のプロパティが「Dhawan」という名前のノードに作成されていることがわかります。

キー値

プロパティの削除

*NULL* を値として渡すことにより、既存のプロパティを削除できます。

構文

以下は、SET句を使用してノードからプロパティを削除する構文です。

MATCH (node:label {properties})
SET node.property = NULL
RETURN node

例に進む前に、次のようにノード「jadeja」を作成します。

Create (Jadeja:player {name: "Ravindra Jadeja", YOB: 1988, POB: "NavagamGhed"})

以下は、以下に示すようにSET句を使用してこのノードからPOBという名前のプロパティを削除するサンプルサイファークエリです。

MATCH (Jadeja:player {name: "Ravindra Jadeja", YOB: 1988, POB: "NavagamGhed"})
SET Jadeja.POB = NULL
RETURN Jadeja

上記のクエリを実行するには、次の手順を実行します-

ステップ1 *-Neo4jデスクトップアプリを開き、Neo4jサーバーを起動します。 次のスクリーンショットに示すように、URL *http://localhost:7474/ を使用して、Neo4jの組み込みブラウザーアプリを開きます。

ブラウザアプリ

  • ステップ2 *-目的のクエリをコピーしてドルプロンプトに貼り付け、次のスクリーンショットで強調表示されている(クエリを実行する)再生ボタンを押します。

プロパティの削除

結果

実行すると、次の結果が得られます。 ここで、 POB という名前の変数が削除されたことを確認できます。

削除されたPOB

複数のプロパティを設定する

同様に、Set句を使用してノードに複数のプロパティを作成できます。 そのためには、これらのキーと値のペアをコンマで指定する必要があります。

構文

以下は、SET句を使用してノードに複数のプロパティを作成する構文です。

MATCH (node:label {properties})
SET node.property1 = value, node.property2 = value
RETURN node

次に、Neo4jのSET句を使用してノードに複数のプロパティを作成するサンプルサイファークエリを示します。

MATCH (Jadeja:player {name: "Ravindra Jadeja", YOB: 1988})
SET Jadeja.POB: "NavagamGhed", Jadeja.HS = "90"
RETURN Jadeja

上記のクエリを実行するには、次の手順を実行します-

ステップ1 *-Neo4jデスクトップアプリを開き、Neo4jサーバーを起動します。 次のスクリーンショットに示すように、URL *http://localhost:7474/ を使用して、Neo4jの組み込みブラウザーアプリを開きます。

ブラウザアプリ

  • ステップ2 *-目的のクエリをコピーしてドルプロンプトに貼り付け、次のスクリーンショットで強調表示されている(クエリを実行する)再生ボタンを押します。

複数のプロパティ

結果

実行すると、次の結果が得られます。 ここで、POBおよびHSという名前のプロパティが作成されたことを確認できます。

プロパティの実行

ノードにラベルを設定する

SET句を使用して、既存のノードにラベルを設定できます。

構文

以下は、既存のノードにラベルを設定する構文です。

MATCH (n {properties . . . . . . . })
SET n :label
RETURN n

例に進む前に、以下に示すように、最初にノード「アンダーソン」を作成します。

CREATE (Anderson {name: "James Anderson", YOB: 1982, POB: "Burnely"})

次に、SET句を使用してノードにラベルを設定するサンプルサイファークエリを示します。 このクエリは、ラベル「player」をノードAndersonに追加して返します。

MATCH (Anderson {name: "James Anderson", YOB: 1982, POB: "Burnely"})
SET Anderson: player
RETURN Anderson

上記のクエリを実行するには、次の手順を実行します-

ステップ1 *-Neo4jデスクトップアプリを開き、Neo4jサーバーを起動します。 次のスクリーンショットに示すように、URL *http://localhost:7474/ を使用して、Neo4jの組み込みブラウザーアプリを開きます。

ブラウザアプリ

  • ステップ2 *-目的のクエリをコピーしてドルプロンプトに貼り付け、次のスクリーンショットで強調表示されている(クエリを実行する)再生ボタンを押します。

ラベルノード

結果

実行すると、次の結果が得られます。 ここで、「player」というラベルがノードに追加されていることがわかります。

追加されたプレーヤー

ノードに複数のラベルを設定する

SET句を使用して、既存のノードに複数のラベルを設定できます。 ここでは、ラベルをコロン「:」で区切って指定する必要があります。

構文

以下は、SET句を使用して既存のノードに複数のラベルを設定する構文です。

MATCH (n {properties . . . . . . . })
SET n :label1:label2
RETURN n

例に進む前に、以下に示すように、まず「Ishant」という名前のノードを作成します。

CREATE (Ishant {name: "Ishant Sharma", YOB: 1988, POB: "Delhi"})

以下は、SET句を使用してノードに複数のラベルを作成するために使用されるサンプルサイファークエリです。

MATCH (Ishant {name: "Ishant Sharma", YOB: 1988, POB: "Delhi"})
SET Ishant: player:person
RETURN Ishant

上記のクエリを実行するには、次の手順を実行します-

ステップ1 *-Neo4jデスクトップアプリを開き、Neo4jサーバーを起動します。 次のスクリーンショットに示すように、URL *http://localhost:7474/ を使用して、Neo4jの組み込みブラウザーアプリを開きます。

ブラウザアプリ

  • ステップ2 *-目的のクエリをコピーしてドルプロンプトに貼り付け、次のスクリーンショットで強調表示されている(クエリを実行する)再生ボタンを押します。

マルチラベル

結果

実行すると、次の結果が得られます。 ここでは、 Ishant という名前のノードに2つのラベル(personとplayer)が追加されていることがわかります。

Ishant Player

Neo4j-句の削除

DELETE句を使用して、データベースからノードと関係を削除できます。

すべてのノードと関係の削除

以下は、DELETE句を使用してデータベース内のすべてのノードと関係を削除するクエリです。

問い合わせ

MATCH (n) DETACH DELETE n

上記のクエリを実行するには、次の手順を実行します-

ステップ1 *-Neo4jデスクトップアプリを開き、Neo4jサーバーを起動します。 次のスクリーンショットに示すように、URL *http://localhost:7474/ を使用して、Neo4jの組み込みブラウザーアプリを開きます。

ブラウザアプリ

  • ステップ2 *-目的のクエリをコピーしてドルプロンプトに貼り付け、次のスクリーンショットで強調表示されている(クエリを実行する)再生ボタンを押します。

デタッチマッチ

これにより、neo4jデータベースからすべてのノードと関係が削除され、空になります。

特定のノードの削除

特定のノードを削除するには、上記のクエリの「n」の場所にノードの詳細を指定する必要があります。

構文

以下は、DELETE句を使用してNeo4jから特定のノードを削除する構文です。

MATCH (node:label {properties . . . . . . . . . .  })
DETACH DELETE node

例に進む前に、以下に示すように、Neo4jデータベースにノード「Ishant」を作成します。

CREATE (Ishant:player {name: "Ishant Sharma", YOB: 1988, POB: "Delhi"})

以下は、DELETE句を使用して上記で作成したノードを削除するサンプルサイファークエリです。

MATCH (Ishant:player {name: "Ishant Sharma", YOB: 1988, POB: "Delhi"})
DETACH DELETE Ishant

上記のクエリを実行するには、次の手順を実行します-

ステップ1 *-Neo4jデスクトップアプリを開き、Neo4jサーバーを起動します。 次のスクリーンショットに示すように、URL *http://localhost:7474/ を使用して、Neo4jの組み込みブラウザーアプリを開きます。

ブラウザアプリ

  • ステップ2 *-目的のクエリをコピーしてドルプロンプトに貼り付け、次のスクリーンショットで強調表示されている(クエリを実行する)再生ボタンを押します。

特定のノード

結果

実行すると、次の結果が得られます。 ここで、指定したノードが削除されたことを確認できます。

削除されたノード Neo4j-remove-clause

Neo4j-Foreach句

*FOREACH* 句は、パスのコンポーネント、または集約の結果に関係なく、リスト内のデータを更新するために使用されます。

構文

FOREACH句の構文は次のとおりです。

MATCH p = (start node)-[*]->(end node)
WHERE start.node = "node_name" AND end.node = "node_name"
FOREACH (n IN nodes(p)| SET n.marked = TRUE)

例に進む前に、次のようにNeo4jデータベースにパス p を作成します。

CREATE p = (Dhawan {name:"Shikar Dhawan"})-[:TOPSCORRER_OF]->(Ind{name:
   "India"})-[:WINNER_OF]->(CT2013{name: "Champions Trophy 2013"})
RETURN p

以下は、FOREACH句を使用してパスに沿ったすべてのノードにプロパティを追加するサンプルサイファークエリです。

MATCH p = (Dhawan)-[*]->(CT2013)
   WHERE Dhawan.name = "Shikar Dhawan" AND CT2013.name = "Champions Trophy 2013"
FOREACH (n IN nodes(p)| SET n.marked = TRUE)

上記のクエリを実行するには、次の手順を実行します-

ステップ1 *-Neo4jデスクトップアプリを開き、Neo4jサーバーを起動します。 次のスクリーンショットに示すように、URL *http://localhost:7474/ を使用して、Neo4jの組み込みブラウザーアプリを開きます。

ブラウザアプリ

  • ステップ2 *-目的のクエリをコピーしてドルプロンプトに貼り付け、次のスクリーンショットで強調表示されている(クエリを実行する)再生ボタンを押します。

For each

結果

実行すると、次の結果が得られます。

プロパティの設定

検証

ノードの作成を確認するには、ドルプロンプトで次のクエリを入力して実行します。

MATCH (n) RETURN n

このクエリは、データベース内のすべてのノードを返します(このクエリについては、以降の章で詳しく説明します)。

次のスクリーンショットに示すように、実行すると、このクエリは作成されたノードを表示します。

作成された結果

Neo4j-マッチ条項

この章では、Match句と、この句を使用して実行できるすべての機能について学習します。

一致を使用してすべてのノードを取得

Neo4jのMATCH句を使用すると、Neo4jデータベース内のすべてのノードを取得できます。

例に進む前に、以下に示すように3つのノードと2つの関係を作成します。

CREATE (Dhoni:player {name: "MahendraSingh Dhoni", YOB: 1981, POB: "Ranchi"})
CREATE (Ind:Country {name: "India", result: "Winners"})
CREATE (CT2013:Tornament {name: "ICC Champions Trophy 2013"})
CREATE (Ind)-[r1:WINNERS_OF {NRR:0.938 ,pts:6}]->(CT2013)

CREATE(Dhoni)-[r2:CAPTAIN_OF]->(Ind)
CREATE (Dhawan:player{name: "shikar Dhawan", YOB: 1995, POB: "Delhi"})
CREATE (Jadeja:player {name: "Ravindra Jadeja", YOB: 1988, POB: "NavagamGhed"})

CREATE (Dhawan)-[:TOP_SCORER_OF {Runs:363}]->(Ind)
CREATE (Jadeja)-[:HIGHEST_WICKET_TAKER_OF {Wickets:12}]->(Ind)

以下は、Neo4jデータベース内のすべてのノードを返すクエリです。

MATCH (n) RETURN n

上記のクエリを実行するには、次の手順を実行します-

ステップ1 *-Neo4jデスクトップアプリを開き、Neo4jサーバーを起動します。 次のスクリーンショットに示すように、URL *http://localhost:7474/ を使用して、Neo4jの組み込みブラウザーアプリを開きます。

ブラウザアプリ

  • ステップ2 *-目的のクエリをコピーしてドルプロンプトに貼り付け、次のスクリーンショットで強調表示されている(クエリを実行する)再生ボタンを押します。

マッチリターン

結果

実行すると、次の結果が得られます。

結果の実行

特定のラベルの下のすべてのノードの取得

match句を使用すると、特定のラベルの下にあるすべてのノードを取得できます。

構文

以下は、特定のラベルの下にあるすべてのノードを取得する構文です。

MATCH (node:label)
RETURN node

次に、サンプルのCypherクエリを示します。これは、データベース内のすべてのノードを player というラベルで返します。

MATCH (n:player)
RETURN n

上記のクエリを実行するには、次の手順を実行します-

ステップ1 *-Neo4jデスクトップアプリを開き、Neo4jサーバーを起動します。 次のスクリーンショットに示すように、URL *http://localhost:7474/ を使用して、Neo4jの組み込みブラウザーアプリを開きます。

ブラウザアプリ

  • ステップ2 *-目的のクエリをコピーしてドルプロンプトに貼り付け、次のスクリーンショットで強調表示されている(クエリを実行する)再生ボタンを押します。

N Player

結果

実行すると、次の結果が得られます。

特定のラベル

関係による一致

MATCH句を使用して、関係に基づいてノードを取得できます。

構文

以下は、MATCH句を使用した関係に基づいてノードを取得する構文です。

MATCH (node:label)<-[: Relationship]-(n)
RETURN n

次に、MATCH句を使用して関係に基づいてノードを取得するサンプルサイファークエリを示します。

MATCH (Ind:Country {name: "India", result: "Winners"})<-[: TOP_SCORER_OF]-(n)
RETURN n.name

上記のクエリを実行するには、次の手順を実行します-

ステップ1 *-Neo4jデスクトップアプリを開き、Neo4jサーバーを起動します。 次のスクリーンショットに示すように、URL *http://localhost:7474/ を使用して、Neo4jの組み込みブラウザーアプリを開きます。

ブラウザアプリ

  • ステップ2 *-目的のクエリをコピーしてドルプロンプトに貼り付け、次のスクリーンショットで強調表示されている(クエリを実行する)再生ボタンを押します。

トップスコアラー

結果

実行すると、次の結果が得られます。

一致関係

すべてのノードを削除

MATCH句を使用して、すべてのノードを削除できます。

問い合わせ

以下は、Neo4jのすべてのノードを削除するクエリです。

MATCH (n) detach delete n

上記のクエリを実行するには、次の手順を実行します-

ステップ1 *-Neo4jデスクトップアプリを開き、Neo4jサーバーを起動します。 次のスクリーンショットに示すように、URL *http://localhost:7474/ を使用して、Neo4jの組み込みブラウザーアプリを開きます。

ブラウザアプリ

  • ステップ2 *-目的のクエリをコピーしてドルプロンプトに貼り付け、次のスクリーンショットで強調表示されている(クエリを実行する)再生ボタンを押します。

Desired Press

結果

実行すると、次の結果が得られます。

削除された関係

Neo4j-オプションの一致句

*OPTIONAL MATCH* 句は、その中に記述されているパターンを検索するために使用され、パターンの欠落部分にヌルを使用します。

OPTIONAL MATCHはmatch句に似ていますが、唯一の違いはパターンの欠落部分の結果としてnullを返すことです。

構文

以下は、リレーションシップを伴うオプションマッチの構文です。

MATCH (node:label {properties. . . . . . . . . . . . . .})
OPTIONAL MATCH (node)-->(x)
RETURN x

次に、ノードICCT2013から関係を取得しようとするサンプルサイファークエリを示します。 そのようなノードがないため、nullを返します。

MATCH (a:Tornament {name: "ICC Champions Trophy 2013"})
OPTIONAL MATCH (a)-->(x)
RETURN x

上記のクエリを実行するには、次の手順を実行します-

ステップ1 *-Neo4jデスクトップアプリを開き、Neo4jサーバーを起動します。 次のスクリーンショットに示すように、URL *http://localhost:7474/ を使用して、Neo4jの組み込みブラウザーアプリを開きます。

ブラウザアプリ

  • ステップ2 *-目的のクエリをコピーしてドルプロンプトに貼り付け、次のスクリーンショットで強調表示されている(クエリを実行する)再生ボタンを押します。

オプションの一致

結果

実行すると、次の結果が得られます。 ここでは、必要なパターンに一致するものがないため、Neo4jがnullを返したことを確認できます。

パターンが必要

Neo4j-Where Clause

SQLと同様に、Neo4j CQLはCQL MATCHコマンドでWHERE句を提供して、MATCHクエリの結果をフィルタリングします。

構文

WHERE句の構文は次のとおりです。

MATCH (label)
WHERE label.country = "property"
RETURN label

例に進む前に、以下に示すようにデータベースに5つのノードを作成します。

CREATE(Dhawan:player{name:"shikar Dhawan", YOB: 1985, runs:363, country: "India"}
CREATE(Jonathan:player{name:"Jonathan Trott", YOB:1981, runs:229, country:"South Africa"}
CREATE(Sangakkara:player{name:"Kumar Sangakkara", YOB:1977, runs:222,
   country:"Srilanka"})
CREATE(Rohit:player{name:"Rohit Sharma", YOB: 1987, runs:177, country:"India"})
CREATE(Virat:player{name:"Virat Kohli", YOB: 1988, runs:176, country:"India"})
CREATE(Ind:Country {name: "India", result: "Winners"})

以下は、WHERE句を使用して国インドに属するすべてのプレーヤー(ノード)を返すサンプルサイファークエリです。

MATCH (player)
WHERE player.country = "India"
RETURN player

上記のクエリを実行するには、次の手順を実行します-

ステップ1 *-Neo4jデスクトップアプリを開き、Neo4jサーバーを起動します。 次のスクリーンショットに示すように、URL *http://localhost:7474/ を使用して、Neo4jの組み込みブラウザーアプリを開きます。

ブラウザアプリ

  • ステップ2 *-目的のクエリをコピーしてドルプロンプトに貼り付け、次のスクリーンショットで強調表示されている(クエリを実行する)再生ボタンを押します。

Where Player

結果

実行すると、次の結果が得られます。

結果の場所

複数の条件を持つWHERE句

WHERE句を使用して、複数の条件を確認することもできます。

構文

以下は、複数の条件でNeo4jでWHERE句を使用する構文です。

MATCH (emp:Employee)
WHERE emp.name = 'Abc' AND emp.name = 'Xyz'
RETURN emp

以下は、2つの条件を使用してNeo4jデータベース内のノードをフィルタリングするサンプルサイファークエリです。

MATCH (player)
WHERE player.country = "India" AND player.runs >=175
RETURN player

上記のクエリを実行するには、次の手順を実行します-

ステップ1 *-Neo4jデスクトップアプリを開き、Neo4jサーバーを起動します。 次のスクリーンショットに示すように、URL *http://localhost:7474/ を使用して、Neo4jの組み込みブラウザーアプリを開きます。

ブラウザアプリ

  • ステップ2 *-目的のクエリをコピーしてドルプロンプトに貼り付け、次のスクリーンショットで強調表示されている(クエリを実行する)再生ボタンを押します。

Return Player

結果

実行すると、次の結果が得られます。

条件結果

Where句との関係の使用

Where句を使用して、関係を使用してノードをフィルター処理することもできます。

データベースに次のグラフがあると仮定します。

想定データベース

以下に示すWHERE句を使用してインドのトップスコアラーを取得するサンプルサイファークエリを次に示します。

MATCH (n)
WHERE (n)-[: TOP_SCORER_OF]->( {name: "India", result: "Winners"})
RETURN n

上記のクエリを実行するには、次の手順を実行します-

ステップ1 *-Neo4jデスクトップアプリを開き、Neo4jサーバーを起動します。 次のスクリーンショットに示すように、URL *http://localhost:7474/ を使用して、Neo4jの組み込みブラウザーアプリを開きます。

ブラウザアプリ

  • ステップ2 *-目的のクエリをコピーしてドルプロンプトに貼り付け、次のスクリーンショットで強調表示されている(クエリを実行する)再生ボタンを押します。

受賞者の結果

結果

実行すると、次の結果が得られます。 ここで、Neo4jがノードを返したことがわかります。これは、ノード名がIndiaである国との関係がTOP_SCORER_OFになっています。

返されたノード

Neo4j-カウント機能

次の詳細を含むグラフをデータベースに作成したとします。

カウントデータベース

カウント

  • count()*関数は、行数をカウントするために使用されます。

構文

以下は、count関数の構文です。

MATCH (n { name: 'A' })-->(x)
RETURN n, count(&ast;)

次に、* count()*関数の使用法を示すサンプルサイファークエリを示します。

Match(n{name: "India", result: "Winners"})--(x)
RETURN n, count(*)

上記のクエリを実行するには、次の手順を実行します-

ステップ1 *-Neo4jデスクトップアプリを開き、Neo4jサーバーを起動します。 次のスクリーンショットに示すように、URL *http://localhost:7474/ を使用して、Neo4jの組み込みブラウザーアプリを開きます。

ブラウザアプリ

  • ステップ2 *-目的のクエリをコピーしてドルプロンプトに貼り付け、次のスクリーンショットで強調表示されている(クエリを実行する)再生ボタンを押します。

カウント一致

結果

実行すると、次の結果が得られます。

カウント結果

グループ数

*COUNT* 句は、関係タイプのグループをカウントするためにも使用されます。

以下は、各リレーションに参加しているノードの数をカウントして返すサンプルサイファークエリです。

Match(n{name: "India", result: "Winners"})-[r]-(x)
RETURN type (r), count(*)

上記のクエリを実行するには、次の手順を実行します-

ステップ1 *-Neo4jデスクトップアプリを開き、Neo4jサーバーを起動します。 次のスクリーンショットに示すように、URL *http://localhost:7474/ を使用して、Neo4jの組み込みブラウザーアプリを開きます。

ブラウザアプリ

  • ステップ2 *-目的のクエリをコピーしてドルプロンプトに貼り付け、次のスクリーンショットで強調表示されている(クエリを実行する)再生ボタンを押します。

グループ数

結果

実行すると、次の結果が得られます。

グループカウント結果

Neo4j-返品条項

RETURN句は、Neo4jでノード、関係、およびプロパティを返すために使用されます。 この章では、次の方法を学習します-

  • 戻りノード
  • 複数のノードを返す
  • 関係を返す
  • プロパティを返す
  • すべての要素を返す
  • 列エイリアスを持つ変数を返します

ノードを返す

RETURN句を使用してノードを返すことができます。

構文

以下は、RETURN句を使用してノードを返す構文です。

Create (node:label {properties})
RETURN node

例に進む前に、以下に示すように3つのノードと2つの関係を作成します。

Create (Dhoni:player {name: "MahendraSingh Dhoni", YOB: 1981, POB: "Ranchi"})
CREATE (Ind:Country {name: "India", result: "Winners"})
CREATE (CT2013:Tornament {name: "ICC Champions Trophy 2013"})
CREATE (Ind)-[r1:WINNERS_OF {NRR:0.938 ,pts:6}]->(CT2013)
CREATE(Dhoni)-[r2:CAPTAIN_OF]->(Ind)

以下は、Dhoniという名前のノードを作成して返すサンプルサイファークエリです。

Create (Dhoni:player {name: "MahendraSingh Dhoni", YOB: 1981, POB: "Ranchi"})
RETURN Dhoni

上記のクエリを実行するには、次の手順を実行します-

ステップ1 *-Neo4jデスクトップアプリを開き、Neo4jサーバーを起動します。 次のスクリーンショットに示すように、URL *http://localhost:7474/ を使用して、Neo4jの組み込みブラウザーアプリを開きます。

ブラウザアプリ

  • ステップ2 *-目的のクエリをコピーしてドルプロンプトに貼り付け、次のスクリーンショットで強調表示されている(クエリを実行する)再生ボタンを押します。

戻る

結果

実行すると、次の結果が得られます。

Create Player

複数のノードを返す

return節を使用して複数のノードを返すこともできます。

構文

以下は、return節を使用して複数のノードを返す構文です。

CREATE (Ind:Country {name: "India", result: "Winners"})
CREATE (CT2013:Tornament {name: "ICC Champions Trophy 2013"})
RETURN Ind, CT2013

以下は、return節を使用して複数のノードを返すサンプルサイファークエリです。

CREATE (Ind:Country {name: "India", result: "Winners"})
CREATE (CT2013:Tornament {name: "ICC Champions Trophy 2013"})
RETURN Ind, CT2013

上記のクエリを実行するには、次の手順を実行します-

ステップ1 *-Neo4jデスクトップアプリを開き、Neo4jサーバーを起動します。 次のスクリーンショットに示すように、URL *http://localhost:7474/ を使用して、Neo4jの組み込みブラウザーアプリを開きます。

ブラウザアプリ

  • ステップ2 *-目的のクエリをコピーしてドルプロンプトに貼り付け、次のスクリーンショットで強調表示されている(クエリを実行する)再生ボタンを押します。

マルチノード

結果

実行すると、次の結果が得られます。 ここで、Neo4jが2つのノードを返したことを確認できます。

トーナメントの作成

関係を返す

Return句を使用して関係を返すこともできます。

構文

以下は、RETURN句を使用して関係を返す構文です。

CREATE (node1)-[Relationship:Relationship_type]->(node2)
RETURN Relationship

以下は、2つの関係を作成してそれらを返すサンプルサイファークエリです。

CREATE (Ind)-[r1:WINNERS_OF {NRR:0.938 ,pts:6}]->(CT2013)
CREATE(Dhoni)-[r2:CAPTAIN_OF]->(Ind)
RETURN r1, r2

上記のクエリを実行するには、次の手順を実行します-

ステップ1 *-Neo4jデスクトップアプリを開き、Neo4jサーバーを起動します。 次のスクリーンショットに示すように、URL *http://localhost:7474/ を使用して、Neo4jの組み込みブラウザーアプリを開きます。

ブラウザアプリ

  • ステップ2 *-目的のクエリをコピーしてドルプロンプトに貼り付け、次のスクリーンショットで強調表示されている(クエリを実行する)再生ボタンを押します。

関係の戻り

結果

実行すると、次の結果が得られます。

勝者の作成

プロパティを返す

RETURN句を使用してプロパティを返すこともできます。

構文

以下は、RETURN句を使用してプロパティを返す構文です。

Match (node:label {properties . . . . . . . . . . })
Return node.property

以下は、ノードのプロパティを返すサンプルサイファークエリです。

Match (Dhoni:player {name: "MahendraSingh Dhoni", YOB: 1981, POB: "Ranchi"})
Return Dhoni.name, Dhoni.POB

上記のクエリを実行するには、次の手順を実行します-

ステップ1 *-Neo4jデスクトップアプリを開き、Neo4jサーバーを起動します。 次のスクリーンショットに示すように、URL *http://localhost:7474/ を使用して、Neo4jの組み込みブラウザーアプリを開きます。

ブラウザアプリ

  • ステップ2 *-目的のクエリをコピーしてドルプロンプトに貼り付け、次のスクリーンショットで強調表示されている(クエリを実行する)再生ボタンを押します。

プロパティリターン

結果

実行すると、次の結果が得られます。

ストリーミング

すべての要素を返す

RETURN句を使用して、Neo4jデータベースのすべての要素を返すことができます。

以下は、データベース内のすべての要素を返すCypher Queryの例です。

Match p = (n {name: "India", result: "Winners"})-[r]-(x)
RETURN *

上記のクエリを実行するには、次の手順を実行します-

ステップ1 *-Neo4jデスクトップアプリを開き、Neo4jサーバーを起動します。 次のスクリーンショットに示すように、URL *http://localhost:7474/ を使用して、Neo4jの組み込みブラウザーアプリを開きます。

ブラウザアプリ

  • ステップ2 *-目的のクエリをコピーしてドルプロンプトに貼り付け、次のスクリーンショットで強調表示されている(クエリを実行する)再生ボタンを押します。

すべての要素

結果

実行すると、次の結果が得られます。

すべての要素の結果

列エイリアスを持つ変数を返す

Neo4jのRETURN句を使用して、エイリアスを持つ特定の列を返すことができます。

以下は、POB列を出生地として返すサンプルサイファークエリです。

Match (Dhoni:player {name: "MahendraSingh Dhoni", YOB: 1981, POB: "Ranchi"})
Return Dhoni.POB as Place Of Birth

上記のクエリを実行するには、次の手順を実行します-

ステップ1 *-Neo4jデスクトップアプリを開き、Neo4jサーバーを起動します。 次のスクリーンショットに示すように、URL *http://localhost:7474/ を使用して、Neo4jの組み込みブラウザーアプリを開きます。

ブラウザアプリ

  • ステップ2 *-目的のクエリをコピーしてドルプロンプトに貼り付け、次のスクリーンショットで強調表示されている(クエリを実行する)再生ボタンを押します。

列を返す

結果

実行すると、次の結果が得られます。

列エイリアス

Neo4j-句による順序

ORDER BY句を使用して、結果データを順番に並べることができます。

構文

ORDER BY句の構文は次のとおりです。

MATCH (n)
RETURN n.property1, n.property2 . . . . . . . .
ORDER BY n.property

例に進む前に、以下に示すようにNeo4jデータベースに5つのノードを作成します。

CREATE(Dhawan:player{name:"shikar Dhawan", YOB: 1985, runs:363, country: "India"})
CREATE(Jonathan:player{name:"Jonathan Trott", YOB:1981, runs:229, country:"South Africa"})
CREATE(Sangakkara:player{name:"Kumar Sangakkara", YOB:1977, runs:222, country:"Srilanka"})
CREATE(Rohit:player{name:"Rohit Sharma", YOB: 1987, runs:177, country:"India"})
CREATE(Virat:player{name:"Virat Kohli", YOB: 1988, runs:176, country:"India"})

次に、サンプルのCypherクエリを示します。このクエリは、ORDERBY句を使用してプレーヤーによってスコア付けされた実行順に上記で作成されたノードを返します。

MATCH (n)
RETURN n.name, n.runs
ORDER BY n.runs

上記のクエリを実行するには、次の手順を実行します-

ステップ1 *-Neo4jデスクトップアプリを開き、Neo4jサーバーを起動します。 次のスクリーンショットに示すように、URL *http://localhost:7474/ を使用して、Neo4jの組み込みブラウザーアプリを開きます。

ブラウザアプリ

  • ステップ2 *-目的のクエリをコピーしてドルプロンプトに貼り付け、次のスクリーンショットで強調表示されている(クエリを実行する)再生ボタンを押します。

名前を返す

結果

実行すると、次の結果が得られます。

レコード

複数のプロパティによるノードの順序付け

*ORDEYBY* 句を使用して、複数のプロパティに基づいてノードを配置できます。

構文

以下は、ORDERBY句を使用して複数のプロパティでノードを配置する構文です。

MATCH (n)
RETURN n
ORDER BY n.age, n.name

以下は、この章の前半で作成されたノードをプロパティ(実行と国)に基づいて配置するサンプルサイファークエリです。

MATCH (n)
RETURN n.name, n.runs, n.country
ORDER BY n.runs, n.country

上記のクエリを実行するには、次の手順を実行します-

ステップ1 *-Neo4jデスクトップアプリを開き、Neo4jサーバーを起動します。 次のスクリーンショットに示すように、URL *http://localhost:7474/ を使用して、Neo4jの組み込みブラウザーアプリを開きます。

ブラウザアプリ

  • ステップ2 *-目的のクエリをコピーしてドルプロンプトに貼り付け、次のスクリーンショットで強調表示されている(クエリを実行する)再生ボタンを押します。

実行順

結果

実行すると、次の結果が得られます。

ノードの注文

降順によるノードの順序付け

*ORDERBY* 句を使用して、データベース内のノードを降順で配置できます。

構文

以下は、データベースにノードを配置するための構文です。

MATCH (n)
RETURN n
ORDER BY n.name DESC

以下は、ORDERBY句を使用してデータベース内のノードを降順に並べるサンプルサイファークエリです。

MATCH (n)
RETURN n.name, n.runs
ORDER BY n.runs DESC

上記のクエリを実行するには、次の手順を実行します-

ステップ1 *-Neo4jデスクトップアプリを開き、Neo4jサーバーを起動します。 次のスクリーンショットに示すように、URL *http://localhost:7474/ を使用して、Neo4jの組み込みブラウザーアプリを開きます。

ブラウザアプリ

  • ステップ2 *-目的のクエリをコピーしてドルプロンプトに貼り付け、次のスクリーンショットで強調表示されている(クエリを実行する)再生ボタンを押します。

降順

結果

実行すると、次の結果が得られます。

並べ替え

Neo4j-制限条項

*limit* 句は、出力の行数を制限するために使用されます。

構文

LIMIT句の構文は次のとおりです。

MATCH (n)
RETURN n
ORDER BY n.name
LIMIT 3

例に進む前に、以下に示すように、Neo4jデータベースに5つのノードを作成します。

CREATE(Dhawan:player{name:"shikar Dhawan", YOB: 1985, runs:363, country: "India"})
CREATE(Jonathan:player{name:"Jonathan Trott", YOB:1981, runs:229, country:"South Africa"})
CREATE(Sangakkara:player{name:"Kumar Sangakkara", YOB:1977, runs:222, country:"Srilanka"})
CREATE(Rohit:player{name:"Rohit Sharma", YOB: 1987, runs:177, country:"India"})
CREATE(Virat:player{name:"Virat Kohli", YOB: 1988, runs:176, country:"India"})

以下は、上記で作成されたノードを降順で返し、結果のレコードを3に制限するサンプルサイファークエリです。

MATCH (n)
RETURN n.name, n.runs
ORDER BY n.runs DESC
LIMIT 3

上記のクエリを実行するには、次の手順を実行します-

ステップ1 *-Neo4jデスクトップアプリを開き、Neo4jサーバーを起動します。 次のスクリーンショットに示すように、URL *http://localhost:7474/ を使用して、Neo4jの組み込みブラウザーアプリを開きます。

ブラウザアプリ

  • ステップ2 *-目的のクエリをコピーしてドルプロンプトに貼り付け、次のスクリーンショットで強調表示されている(クエリを実行する)再生ボタンを押します。

制限

結果

実行すると、次の結果が得られます。

結果の制限

式で制限する

式でLIMIT句を使用することもできます。

以下は、式を使用してレコードを制限するサンプルサイファークエリです。

MATCH (n)
RETURN n.name, n.runs
ORDER BY n.runs DESC
LIMIT toInt(3 * rand())+ 1

上記のクエリを実行するには、次の手順を実行します-

ステップ1 *-Neo4jデスクトップアプリを開き、Neo4jサーバーを起動します。 次のスクリーンショットに示すように、URL *http://localhost:7474/ を使用して、Neo4jの組み込みブラウザーアプリを開きます。

ブラウザアプリ

  • ステップ2 *-目的のクエリをコピーしてドルプロンプトに貼り付け、次のスクリーンショットで強調表示されている(クエリを実行する)再生ボタンを押します。

式の制限

結果

実行すると、次の結果が得られます。

式の結果

Neo4j-句をスキップ

SKIP句は、出力に行を含める開始行を定義するために使用されます。

例に進む前に、以下に示すように5つのノードを作成します。

CREATE(Dhawan:player{name:"shikar Dhawan", YOB: 1985, runs:363, country: "India"})
CREATE(Jonathan:player{name:"Jonathan Trott", YOB:1981, runs:229, country:"South Africa"})
CREATE(Sangakkara:player{name:"Kumar Sangakkara", YOB:1977, runs:222, country:"Srilanka"})
CREATE(Rohit:player{name:"Rohit Sharma", YOB: 1987, runs:177, country:"India"})
CREATE(Virat:player{name:"Virat Kohli", YOB: 1988, runs:176, country:"India"})

以下は、最初の3つのノードをスキップしてデータベース内のすべてのノードを返すサンプルサイファークエリです。

MATCH (n)
RETURN n.name, n.runs
ORDER BY n.runs DESC
SKIP 3

上記のクエリを実行するには、次の手順を実行します-

ステップ1 *-Neo4jデスクトップアプリを開き、Neo4jサーバーを起動します。 次のスクリーンショットに示すように、URL *http://localhost:7474/ を使用して、Neo4jの組み込みブラウザーアプリを開きます。

ブラウザアプリ

  • ステップ2 *-目的のクエリをコピーしてドルプロンプトに貼り付け、次のスクリーンショットで強調表示されている(クエリを実行する)再生ボタンを押します。

スキップ

結果

実行すると、次の結果が得られます。

結果をスキップ

式の使用をスキップ

式を使用して結果のレコードをスキップできます。

次に、式でSKIP句を使用するサンプルサイファークエリを示します。

MATCH (n)
RETURN n.name, n.runs
ORDER BY n.runs DESC
SKIP toInt (2*rand())+ 1

ステップ1 *-Neo4jデスクトップアプリを開き、Neo4jサーバーを起動します。 次のスクリーンショットに示すように、URL *http://localhost:7474/ を使用して、Neo4jの組み込みブラウザーアプリを開きます。

ブラウザアプリ

  • ステップ2 *-目的のクエリをコピーしてドルプロンプトに貼り付け、次のスクリーンショットで強調表示されている(クエリを実行する)再生ボタンを押します。

スキップ式

結果

実行すると、次の結果が得られます。

式の結果をスキップ

Neo4j-句あり

WITH句を使用して、クエリアートを連結できます。

構文

WITH句の構文は次のとおりです。

MATCH (n)
WITH n
ORDER BY n.property
RETURN collect(n.property)

次に、WITH句の使用法を示すサンプルサイファークエリを示します。

MATCH (n)
WITH n
ORDER BY n.name DESC LIMIT 3
RETURN collect(n.name)

上記のクエリを実行するには、次の手順を実行します-

ステップ1 *-Neo4jデスクトップアプリを開き、Neo4jサーバーを起動します。 次のスクリーンショットに示すように、URL *http://localhost:7474/ を使用して、Neo4jの組み込みブラウザーアプリを開きます。

ブラウザアプリ

  • ステップ2 *-目的のクエリをコピーしてドルプロンプトに貼り付け、次のスクリーンショットで強調表示されている(クエリを実行する)再生ボタンを押します。

Return Collect

結果

実行すると、次の結果が得られます。

結果の収集

Neo4j-アンワインド句

unwind節は、リストを一連の行に巻き戻すために使用されます。

以下は、リストを巻き戻すサンプルサイファークエリです。

UNWIND [a, b, c, d] AS x
RETURN x

上記のクエリを実行するには、次の手順を実行します-

ステップ1 *-Neo4jデスクトップアプリを開き、Neo4jサーバーを起動します。 次のスクリーンショットに示すように、URL *http://localhost:7474/ を使用して、Neo4jの組み込みブラウザーアプリを開きます。

ブラウザアプリ

  • ステップ2 *-目的のクエリをコピーしてドルプロンプトに貼り付け、次のスクリーンショットで強調表示されている(クエリを実行する)再生ボタンを押します。

Return Collect

結果

実行すると、次の結果が得られます。

結果の収集

Neo4j-文字列関数

SQLと同様に、Neo4J CQLは、必要な結果を得るためにCQLクエリで使用する一連の文字列関数を提供しています。

ここでは、重要で頻繁に使用される機能のいくつかについて説明します。

文字列関数リスト

以下は、Neo4jの主要な文字列関数のリストです。

Sr.No Function & Description
1

UPPER

すべての文字を大文字に変更するために使用されます。

2

LOWER

すべての文字を小文字に変更するために使用されます。

3

SUBSTRING

指定された文字列の部分文字列を取得するために使用されます。

4

Replace

これは、サブストリングをストリングの特定のサブストリングで置き換えるために使用されます。

Neo4j-集約関数

SQLと同様に、Neo4j CQLはRETURN句で使用するいくつかの集計関数を提供しています。 SQLのGROUP BY句に似ています。

MATCHコマンドでこのRETURN +集約関数を使用して、ノードのグループで作業し、集約された値を返すことができます。

集約関数リスト

以下は、Neo4jの集約関数のリストです。

Sr.No Function & Description
1

COUNT

MATCHコマンドによって返された行数を返します。

2

MAX

MATCHコマンドによって返された行のセットから最大値を返します。

3

MIN

MATCHコマンドによって返された行のセットから最小値を返します。

4

SUM

MATCHコマンドによって返されたすべての行の合計値を返します。

5

AVG

MATCHコマンドによって返されるすべての行の平均値を返します。

Neo4j-バックアップと復元

リアルタイムアプリケーションでは、アプリケーションデータベースのバックアップを定期的に取得する必要があります。これにより、障害ポイントで何らかの動作状態に復元できます。

このルールは、RDBMSデータベースとNoSQLデータベースの両方に適用されます。

このセクションでは、2つの重要なDBAタスクについて説明します。

  • Neo4jデータベースのバックアップ方法。
  • Neo4jデータベースを特定のバックアップに復元する方法。

-これらの手順は、Windowsオペレーティングシステムのみに適用されます。 他のオペレーティングシステムで同じ手順を実行するには、同様の種類のコマンドを使用する必要があります。

Neo4jデータベースのバックアップ

  • ステップ1 *-次のパスを使用して「Neo4jコミュニティ」をクリックします-

Windowsの「スタート」ボタン→「すべてのプログラム」→「Neo4jコミュニティ」→「Neo4jコミュニティ」

デフォルトでは、* c:\ Users \ [username] \ Documents \ Neo4j \ default.graphdb。*を選択します。ただし、必要に応じて、パスを別のディレクトリに変更できます。

  • ステップ2 *-ここでは、Neo4jデータベースフォルダーに変更しました。

C:\ Ne04j2.0db

コミュニティ設定

  • ステップ3 *-[開始]ボタンをクリックします。

参照停止

サーバーが起動すると、Neo4jデータベースファイルが指定されたディレクトリに生成されることを確認できます。

観測ディレクトリ

データベースのバックアップをとる前に、まず行うべきことはNeo4jデータベースサーバーをシャットダウンすることです。

  • ステップ4 *-[停止]ボタンをクリックしてサーバーをシャットダウンします。

コミュニティ設定

Neo4jデータベースファイルはC:\ Ne04j2.0dbで入手できます。

観測ディレクトリ

  • ステップ5 *-コマンドプロンプトを開きます。

コマンドプロンプト

  • ステップ6 *-C:\ Neo4jに「Neo4jDbBackup-01」フォルダを作成します(これはファイルシステム内の任意の場所になります)。
mkdir C:\Neo4j\Neo4jDbBackup-01

Cmd Mkdir

指定されたファイルシステムの場所「C:\ Neo4j \」に新しいフォルダー「Neo4jDbBackup-01」を作成します。

新しいディレクトリ

  • ステップ7 *-次のコマンドを入力し、Enterキーを押します。
copy C:\Ne04j2.0db C:\Neo4j\Neo4jDbBackup-01

バックアップコマンド

コピーされたステートメント

これは、ファイルが必要な宛先フォルダーにコピーされることを意味します。 そのフォルダーにアクセスし、フォルダーにデータベースファイルがあることを確認します。

データベースファイル

  • ステップ8 *-WinZip、7 Zip、WinRARなどのWindows圧縮/解凍ツールを使用して、データベースフォルダーを圧縮します。

ZIPフォルダー

  • ステップ9 *-Neo4jDbBackup-01.zipファイルが作成されました。 ファイルシステムにメモリの制約がある場合は、「C:\ Neo4j \」の「Neo4jDbBackup-01」フォルダーを削除します。

メモリ制約

Neo4jデータベースの復元

  • ステップ1 *-データベースサーバーをシャットダウンします。 前の手順を参照して、サーバーをシャットダウンしてください。

コミュニティ設定

  • ステップ2 *-現在のデータベースフォルダーを空にします。

現在のデータベース

  • ステップ3 *-WinZip、7 Zip、WinRarなどのWindows圧縮/解凍ツールを使用して、バックアップフォルダーを解凍します。

ファイルの抽出

  • ステップ4 *-コマンドプロンプトを開き、次のコマンドを実行します。
Copy C:\Neo4j\Neo4jDbBackup-01 C:\Ne04j2.0db

実行

これで、データベースフォルダーに作業バックアップファイルが含まれていることがわかります。

  • ステップ5 *-[開始]ボタンをクリックしてサーバーを起動します。

コミュニティ設定

参照停止

  • ステップ6 *-いくつかのMATCH + RETURNコマンドを実行して、データベースが適切に復元されたかどうかを確認します。

Neo4j-一意の制約を作成する

Neo4jデータベースでは、CQL CREATEコマンドは常に新しいノードまたはリレーションシップを作成します。つまり、同じ値を使用しても、新しい行が挿入されます。 一部のノードまたは関係のアプリケーション要件に従って、この重複を回避する必要があります。 このために、いくつかのデータベース制約を使用して、ノードまたは関係の1つ以上のプロパティにルールを作成する必要があります。

SQLと同様に、Neo4jデータベースはノードまたは関係のプロパティに対するUNIQUE制約もサポートしています。 UNIQUE制約は、レコードの重複を避け、データ整合性ルールを実施するために使用されます。

一意の制約を作成する

Neo4j CQLは、ノードまたは関係のプロパティに一意の制約を作成するための「CREATE CONSTRAINT」コマンドを提供します。

構文

Neo4jでUNIQUE制約を作成する構文は次のとおりです。

MATCH (root {name: "Dhawan"})
CREATE UNIQUE (root)-[:LOVES]-(someone)
RETURN someone

例に進む前に、以下に示すように4つのノードを作成します。

CREATE(Dhawan:player{id:001, name: "shikar Dhawan", YOB: 1995, POB: "Delhi"})
CREATE(Jonathan:player {id:002, name: "Jonathan Trott", YOB: 1981, POB: "CapeTown"})
CREATE(Sangakkara:player {id:003, name: "Kumar Sangakkara", YOB: 1977, POB: "Matale"})
CREATE(Rohit:player {id:004, name: "Rohit Sharma", YOB: 1987, POB: "Nagpur"})
CREATE(Virat:player {id:005, name: "Virat Kohli", YOB: 1988, POB: "Delhi"})

次に、Neo4jを使用してプロパティIDにUNIQUE制約を作成するサンプルサイファークエリを示します。

CREATE CONSTRAINT ON (n:player) ASSERT n.id IS UNIQUE

上記のクエリを実行するには、次の手順を実行します-

ステップ1 *-Neo4jデスクトップアプリを開き、Neo4jサーバーを起動します。 次のスクリーンショットに示すように、URL *http://localhost:7474/ を使用して、Neo4jの組み込みブラウザーアプリを開きます。

ブラウザアプリ

  • ステップ2 *-目的のクエリをコピーしてドルプロンプトに貼り付け、次のスクリーンショットで強調表示されている(クエリを実行する)再生ボタンを押します。

ユニークな作成

結果

実行すると、次の結果が得られます。

制約の追加

検証

ここで、冗長ID値を持つ別のノードを追加してみてください。 ここでは、ID 002 のノードを作成しようとしています。

CREATE (Jadeja:player {id:002, name: "Ravindra Jadeja", YOB: 1988, POB: "NavagamGhed"})

このクエリを実行すると、次のスクリーンショットに示すようなエラーメッセージが表示されます。

ノードラベルプレイ

Neo4j-ユニークなドロップ

前の章の例で、UNIQUE制約操作の作成について既に説明しました。 この章では、例を使用してUNIQUE制約操作の削除について説明します。

Neo4j CQLには、ノードまたは関係プロパティから既存の一意の制約を削除するための「DROP CONSTRAINT」コマンドが用意されています。

構文

Neo4jでUNIQUE制約を削除するための構文は次のとおりです。

DROP CONSTRAINT ON (node:label)
ASSERT node.id IS UNIQUE

以下は、プロパティ id のUNIQUE制約を削除するサンプルサイファークエリです。

DROP CONSTRAINT ON (n:player)
ASSERT n.id IS UNIQUE

上記のクエリを実行するには、次の手順を実行します-

ステップ1 *-Neo4jデスクトップアプリを開き、Neo4jサーバーを起動します。 次のスクリーンショットに示すように、URL *http://localhost:7474/ を使用して、Neo4jの組み込みブラウザーアプリを開きます。

ブラウザアプリ

  • ステップ2 *-目的のクエリをコピーしてドルプロンプトに貼り付け、次のスクリーンショットで強調表示されている(クエリを実行する)再生ボタンを押します。

ドロップ制約

結果

実行すると、次の結果が得られます。

制約の削除