CREATE
- Movieラベル付きのTheMatrixノードを作る。
CREATE (TheMatrix:Movie {title:'The Matrix', released:1999, tagline:'Welcome to the Real World'})
rolesというキーに紐付く['Neo']というバリューを持つACTED_INというリレーションをもつkeanuノードを作る。そのkeanuノードはTheMatrixノードと紐付く。
CREATE (Keanu)-[:ACTED_IN {roles:['Neo']}]->(TheMatrix)
Find
- select句
MATCH (nineties:Movie) RETURN *
where句
MATCH (tom {name: "Tom Hanks"}) RETURN tom
複数where句
MATCH (nineties:Movie) WHERE nineties.released > 1990 AND nineties.released < 2000 RETURN nineties.title
リレーションwhere句 その①
MATCH (tom:Person {name: "Tom Hanks"})-[:ACTED_IN]->(tomHanksMovies) RETURN tom,tomHanksMovies
リレーションwhere句①(左から右)
MATCH (tom:Person {name: "Tom Hanks"})-[:ACTED_IN]->(tomHanksMovies) RETURN tom,tomHanksMovies
リレーションwhere句①(右から左)
MATCH (cloudAtlas {title: "Cloud Atlas"})<-[:DIRECTED]-(directors) RETURN directors.name
リレーションwhere句③(①と②の合わせ技)
MATCH (tom:Person {name:"Tom Hanks"})-[:ACTED_IN]->(m)<-[:ACTED_IN]-(coActors) RETURN coActors.name
リレーション自体を不定にすることもできる
MATCH (people:Person)-[relatedTo]-(:Movie {title: "Cloud Atlas"}) RETURN people.name, Type(relatedTo), relatedTo
limit句
MATCH (people:Person) RETURN people.name LIMIT 10
Solve (GraphDBならではのselect文)
- Kevin Baconから4関係分(=4hopsという)以内にhollywoodリレーションで関係のあるデータの取得
MATCH (bacon:Person {name:"Kevin Bacon"})-[*1..4]-(hollywood) RETURN DISTINCT hollywood
Kevin BaconからMeg Ryanまでで最短のパスを獲得する
MATCH p=shortestPath( (bacon:Person {name:"Kevin Bacon"})-[*]-(meg:Person {name:"Meg Ryan"}) ) RETURN p
Clean up
- Delete all Movie and Person nodes, and their relationships
MATCH (a:Person),(m:Movie) OPTIONAL MATCH (a)-[r1]-(), (m)-[r2]-() DELETE a,r1,m,r2
レコードの確認
MATCH (n) RETURN n
limit句
MATCH (people:Person) RETURN people.name LIMIT 10
その他
- 困ったら
:help [コマンド名称]
例) :help MATCH