LoginSignup
3
2

More than 5 years have passed since last update.

Neo4jの勉強メモ1

Last updated at Posted at 2014-12-04

グラフデータベースとは

  • プロパティを持つノードでデータとそのリレーションをあらわす

ノードとは

  • ノードとはデータを保持するレコードである
  • データはノードのプロパティとして格納される
  • プロパティはKV形式になっている
  • プロパティはString, Number, Boolean
  • Neo4j can store billions of nodes

ラベル

  • ノードにはラベルを付けることが出来る
  • ノードは複数のラベルを持つことが出来る
  • ラベルは一切プロパティーをもてない

リレーションシップ

  • リレーションシップはレコードがどのように紐付いているかを示す
  • リレーションシップは常に方向を持っている
  • リレーションシップはタイプを持っている
  • リレーションシップはデータのパターンである
  • リレーションシップはプロパティを持てる

Cypher

  • グラフデータを扱うためのSQL的なもの
  • CREATE (ee:Person { name: "Emil", from: "Sweden", klout: 99 }) CREATE データを作るための宣言 () ノードを示す ee:Person eeはデータ名称、Personはラベル名称 {} プロパティ宣言
MATCH (ee:Person) WHERE ee.name = "Emil" RETURN ee;

MATCH where句宣言みたいなもの
(ee:Person) 対象のノード
WHERE WHERE句
ee.name = "Emil" where句の左側的な
RETURN リターン

  • 一度にたくさんのデータを作ることが可能
  • 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)
    
  • リレーションから検索する

  • MATCH (ee:Person)-[:KNOWS]-(friends)
    WHERE ee.name = "Emil" RETURN ee, friends
    

    -[:KNOWS] リレーションシップがKNOWであるかどうか
    (friends) エミリーの友達に限定することを指定

  • グラフデータの得意な検索

  • MATCH (js:Person)-[:KNOWS]-()-[:KNOWS]-(surfer)
    WHERE js.name = "Johan" AND surfer.hobby = "surfing"
    RETURN DISTINCT surfer
    

    () 空の丸カッコはsqlでいうところの*
    DISTINCT sqlでいうところのdistinctと同じ。ヒットするノードへのパスが複数あるときに役立つ。

参考URL

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