1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

グラフ型 NoSQL「Neo4j」のクエリ言語 Cypherの使い方(Windows版)

Last updated at Posted at 2024-01-10

introducing-neo4j-4-1.gif

1. Neo4jとは

  • NoSQLのグラフ型データベース。データをノード(nodes)とエッジ(relationships)によるグラフ構造で表現する。
  • Javaで開発され、オープンソースとして提供されている。
  • 2000年ごろ、スウェーデンで開発された。後に本社をシリコンバレーに移転した。
  • 「Cypher」と呼ばれる専用のクエリ言語を使用する。ノードや関係に対するクエリを直感的に記述できる。
  • トランザクション処理をサポートしており、データの一貫性(整合性)を確保できる。

2. Neo4jの導入

Neo4jとJDKを各々ダウンロードし、インストールする。

<JAVAのパス設定>
(1) スタートメニューから 「Windowsシステムツール」→「コントロールパネル」を開く
(2)「システムとセキュリティ」→「システム」→「システム詳細設定」→「環境変数」を開く
(3)「システム環境変数」で下記のように登録
 変数名: JAVA_HOME
 変数値: C:\Java\jdk-11.0.2
(4)「Path」を選んで、次のように登録
 %JAVA_HOME%\bin

3. Neo4jの起動

Neo4j Desktopをダブルクリックして起動する。

4. Neo4j 新規プロジェクトの作成

(1) Neo4jのGUI画面から、Project → Add → Local DBMS をクリックする。
(2) プロジェクトの名前(name)とパスワード(password)を設定し、「Create」をクリックする。
(3) 作成したプロジェクトを選択し、「start」をクリックすると、neo4j browserが起動する。

5. Neo4jのコマンド

5-1. ノードとリレーションシップの作成

■ ノード

  • ノードは、ラベルとプロパティで構成される。ラベルはノードの名前、プロパティはノードの属性情報を示す。
  • ノードは括弧 () で表し、コロン(:)の前の文字列を変数、コロン(:)の後の文字列をラベルという。
  • プロパティは、()内の{}で表す。

■ リレーションシップ

  • リレーションは、ノードと同様に、ラベルとプロパティで構成される。
  • リレーションは、角括弧 [] で表わし、リレーションの方向を -、->、<- で表現することができる。

例1)ノードの作成
 ラベルが "User"、プロパティが "name" と "age" を持つノードを作成する。
 変数 u1:name が「太郎」、age が「25歳」
 変数 u2:name が「花子」、age が「27歳」
例2)リレーションシップの作成
 変数 r1:u1は、u2とfriendの関係
 変数 r2:u2は、u1とfriendの関係

CREATE (u1:User {name:"taro", age:25}) 
CREATE (u2:User {name:"hanako", age:27}) 
CREATE (u3:User {name:"jiro", age:23}) 
CREATE (u1)-[r1:friend]->(u2) 
CREATE (u1)<-[r2:friend]-(u2) 
CREATE (u1)-[r3:brother]->(u3) 
CREATE (u1)<-[r4:brother]-(u3) 
RETURN u1,u2,u3,r1,r2,r3,r4

image.png

5-2. ノードとリレーションシップの検索

例1)'taro'という名前の User ノードとそのfriendリレーションシップを検索する。

MATCH (p1:User)-[:friend]->(p2:User) WHERE p1.name='taro'
RETURN p1,p2

image.png

例2:'taro'という名前の User ノードとそのbrotherリレーションシップを検索する。

MATCH (p1:User)-[:brother]->(p2:User) WHERE p1.name='tarp'
RETURN p1,p2

image.png

例3:ageが25歳以上のUserを検索する。

MATCH (p1:User)
WHERE p1.age > 25
RETURN p1

image.png

5-3. ノードのプロパティの更新

MATCH (p1:User {name:'taro'})
SET p1.age = 30
RETURN p1

image.png

5-4. ノードとリレーションを全て削除する

MATCH (p1) DETACH DELETE p1

以上

1
2
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
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?