この文書の現在のバージョンと選択したバージョンの差分を表示します。
次のリビジョン | 前のリビジョン | ||
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> |