Aura
Neo4j AuraDBは、Neo4jのクラウドサービスです。 zero-admin でWebブラウザで簡単にグラフデータベースを作ることができます。
準備
以下の材料を用意します。
なお、今回の作業はmacOS/Intelで行っています。
- PC
- ターミナル (Terminal)
- Webブラウザー
- インターネット回線
- 設定するだけなので繋がればOK
- アカウント作成に必要なもの
- 下記のうち1つ
- Googleのアカウント
- メールアドレス
- 下記のうち1つ
アカウントの作成
まずは、サイトにアクセスしましょう。
- https://neo4j.com/cloud/aura/ にアクセス
Start Free
をクリック
ここで、アカウントを作成します。
Register
のタブをクリックGoogleアカウント
かメールアドレス・パスワード
のどちらかを選択- 画面下の背景が青い
REGISTER >
をクリック
メールアドレスの場合は、電子メール認証のメッセージが表示されます。
電子メール認証
- メールボックスを確認
Verify my e-mail address
をクリック
データベースの作成
Database typeの選択
AuraDB Free
を選択します。
DBの作成 (Database details)
- Database Nameは、好きな名前を入力。例では
Movie
- GCP Regionを選択。例では`Singapore~
- Starting dataset。
movie dataset
Create Database
をクリック
パスワードのコピー
- パスワードをコピー
- コピーが終わったら
チェック
を入れて、Continue
ここに表示されているものは、以前に作成したDBのものですので使えません。
Neo4j Browserを使う
Open with
のドロップダウンからNeo3j Browser
を選択
Neo4j Browser
Cypher
Movieのデータを作成しました。 データを検索してみましょう
Matrixを検索
MovieのタイトルがMatrixを含んでいるものは?
MATCH (n:Movie)
WHERE n.title CONTAINS 'Matrix'
RETURN n
1999年にリリースされた映画は?
MATCH (n:Movie)
WHERE n.released = 1999
RETURN n
1999年の映画に出てきた俳優は?
MATCH (n:Movie)-[:ACTED_IN]-(m:Person)
WHERE n.released = 1999
RETURN n,m
最短経路
トムハンクスとキアヌリーブスの最短経路
MATCH p=shortestPath(
(:Person {name:"Tom Hanks"})-[*]-(:Person {name:"Keanu Reeves"}))
RETURN p
トムハンクスとキアヌリーブスの全ての最短経路
MATCH p=allShortestPaths(
(:Person {name:"Tom Hanks"})-[*]-(:Person {name:"Keanu Reeves"}))
RETURN p
パターンマッチ
映画に出演してない人
MATCH (p:Person)
WHERE NOT (p)--(:Movie)
RETURN p
出演と監督の両方をしている人
MATCH (p:Person)-[:ACTED_IN]->(m:Movie)<-[:DIRECTED]-(p)
RETURN p
出演と監督の両方をしている人と映画
MATCH (p:Person)-[:ACTED_IN]->(m:Movie)<-[:DIRECTED]-(p)
RETURN p,m
2作品以上で共演もしくは出会った人
MATCH (p:Person)-->(m1:Movie)<--(p2:Person),
(p)-->(m2:Movie)<--(p2)
RETURN *
LIMIT 25
2作品以上で共演もしくは出会った人をリストで出力
MATCH (p:Person)-->(m1:Movie)<--(p2:Person),
(p)-->(m2:Movie)<--(p2)
RETURN p.name, collect(distinct(p2.name))
LIMIT 25
俳優になろう (Step by step)
自分を登録
CREATE (:Person {name: 'myname'})
自分に、Meと言うラベルを追加
MATCH (:Person {name: 'myname'})
SET n:Me
RETURN n
登録を確認
MATCH (n:Person {name: 'myname'})
RETURN n
生まれた年と県を登録
MATCH (n:Person {name: 'myname'})
SET n.born = 1970
SET n.pref = '福岡'
RETURN n
マトリックスを検索
MATCH (n:Movie)
WHERE n.title CONTAINS 'Matrix'
RETURN n;
マトリックス3部作に出演
MATCH (n:Movie),(p:Person {name: 'myname'})
WHERE n.title CONTAINS 'Matrix'
CREATE (n)<-[:ACTED_IN]-(p)
RETURN *