ユーザ用ツール

サイト用ツール


neo4j:よく使うコマンド

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

次のリビジョン
前のリビジョン
neo4j:よく使うコマンド [2020/07/19 16:51]
ips 作成
neo4j:よく使うコマンド [2020/07/21 07:48] (現在)
ips
ライン 1: ライン 1:
 ====== よく使うコマンド ====== ====== よく使うコマンド ======
 +
 +[[https://​gist.github.com/​ykst/​60ecf2b21fc1ed937ec01af163fdf6a0|逆引きCypher]]
 +[[https://​neo4j.com/​docs/​cypher-manual/​current/​administration/​databases/​index.html|neo4j]]
 +
 +ノードと呼ばれるオブジェクトを複数作成できる。
 +ノードは同一ラベル、同一プロパティでも複数作成される。(idが異なる)
 +(ノード:​ラベル{プロパティ1:​xxx,​プロパティ2:​yyy})
 +
 +ノード間は方向性のあるリレーションで結ぶことができる。
 +(ノード)-[:​ラベル{プロパティ1:​xxx,​プロパティ2:​yyy}]->​(ノード)
 +
 +リレーションを作成する場合は、同一プロパティのノードが複数作成可能なため、
 +matchで検索した結果の変数を使って作成する。
 +もしくは、createでノードの作成と同時にリレーションも作成する。
  
 <​code>​ <​code>​
 +#追加
 +create(a:​Person{name:"​taro",​age:​44})
 +create(b:​Person{name:"​hana",​age:​44})
 +create(c:​Person{name:"​sabu",​age:​44})
 +
 +#検索
 +match(n:​Person)where n.name="​taro"​ return n
 +
 +#更新
 +match(n:​Person)where n.name="​taro"​ set n.age=45
 +
 +#追加
 +create(a:​Person{name:"​hana",​age:​10})
 +create(a:​Person{name:"​sabu",​age:​30})
 +
 +#​リレーション追加 taroからtaro以外のノードへlikeのリレーションを作成
 +match(a:​Person)where a.name="​taro"​
 +match(b:​Person)where b.name<>"​taro"​
 +create (a)-[:​like]->​(b)
 +
 +#​リレーションの削除
 +MATCH ()-[e:​like]-() delete e
 +
 +#​リレーションを内部ID指定で削除
 +match()-[a]->​() where ID(a)=21 delete a
 +
 +#​ノードの削除
 +match(a) where a.name="​taro"​ delete a
 +
 +#​ノードを内部ID指定で削除
 +match(a) where ID(a)=21 delete a
 +
 +#​全リレーションの削除
 +MATCH ()-[e]-() delete e
 +
 +#​全ノードとリレーションの削除
 +MATCH (n) DETACH DELETE n
 +</​code>​
 +
 +
 +<​code>​
 +#​データベース作成 ※エンタープライズエディションのみ
 +CREATE DATABASE [名前]
 +
 #​全てを削除 #​全てを削除
 MATCH (n) MATCH (n)
 DETACH DELETE n DETACH DELETE n
 +
 +#​ノードを作成する
 +#CREATE データを作成する句
 +#() ノードを示す括弧
 +#ee:Person 新しいノードの変数「ee」とラベル「Person」
 +CREATE (ee:Person { name: "​Emil",​ from: "​Sweden",​ klout: 99 })
 +
 +#検索
 +match (nn:​Person)where nn.name="​taro"​
 +match(mm:​Person)where mm.name="​hana"​
 +return nn,mm
 +
 +#​リレーションの作成
 +match (nn:​Person)where nn.name="​ryu"​
 +match(mm:​Person)where mm.name="​hana"​
 +create(nn)-[:​FRIEND]->​(mm)
 +
 +
 +#​ノードとリレーションを作成する
 +create(taro)-[:​FRIEND]->​(hana)
 +
 +#​全ノードを表示する
 +MATCH (n) RETURN n LIMIT 25
 +
 +#​全リレーションを表示する
 +MATCH p=()-[r:​KNOWS]->​() RETURN p LIMIT 25
 +
 +#​Emilを表すノードを検索
 +#MATCH ノードと関係のパターンを指定する句
 +#​(ee:​Person) 変数「ee」に一致を割り当てるラベル「Person」の単一ノードパターン
 +#WHERE 結果を制約する句
 +#ee.name = "​Emil"​ 名前プロパティを値「Emil」と比較します
 +#RETURN 特定の結果を要求するために使用される句
 +MATCH (ee:Person) WHERE ee.name = "​Emil"​ RETURN ee;
 +
 +#​一度に多くのノードとリレーションを作成する
 +MATCH (ee:Person) WHERE ee.name = "​Emil"​
 +CREATE (js:Person { name: "​Johan",​ from: "​Sweden",​ learn: "​surfing"​ }),
 +(ir:Person { name: "​Ian",​ from: "​England",​ title: "​author"​ }),
 +(rvb:Person { name: "​Rik",​ from: "​Belgium",​ pet: "​Orval"​ }),
 +(ally:​Person { name: "​Allison",​ from: "​California",​ hobby: "​surfing"​ }),
 +(ee)-[:​KNOWS {since: 2001}]->​(js),​(ee)-[:​KNOWS {rating: 5}]->​(ir),​
 +(js)-[:​KNOWS]->​(ir),​(js)-[:​KNOWS]->​(rvb),​
 +(ir)-[:​KNOWS]->​(js),​(ir)-[:​KNOWS]->​(ally),​
 +(rvb)-[:​KNOWS]->​(ally)
 +
 +#​Emailのパターンマッチ
 +MATCH (ee:​Person)-[:​KNOWS]-(friends)
 +WHERE ee.name = "​Emil"​ RETURN ee, friends
 +
 +
 +MATCH (js:​Person)-[:​KNOWS]-()-[:​KNOWS]-(surfer)
 +WHERE js.name = "​Johan"​ AND surfer.hobby = "​surfing"​
 +RETURN DISTINCT surfer
 +
 +PROFILE MATCH (js:​Person)-[:​KNOWS]-()-[:​KNOWS]-(surfer)
 +WHERE js.name = "​Johan"​ AND surfer.hobby = "​surfing"​
 +RETURN DISTINCT surfer
 +
 </​code>​ </​code>​
neo4j/よく使うコマンド.1595145095.txt.gz · 最終更新: 2020/07/19 16:51 by ips