Neo4j 實戰(二)-- neo4j 基礎語句


前言:

  這篇本章通過 neo4j 官方給出的 movie graph 例子學習 neo4j 基本的創建、查詢、修改、刪除語句。

一、創建圖譜

1. 獲取 Example Graph - Movie Graph 實例

 2. 導入官網的圖譜創建語句

 下面展示了電影 "The Matrix" 的人物信息與關系:

 1 // create the profiles of actors
 2 CREATE (TheMatrix:Movie {title:'The Matrix', released:1999, tagline:'Welcome to the Real World'})
 3 CREATE (Keanu:Person {name:'Keanu Reeves', born:1964})
 4 CREATE (Carrie:Person {name:'Carrie-Anne Moss', born:1967})
 5 CREATE (Laurence:Person {name:'Laurence Fishburne', born:1961})
 6 CREATE (Hugo:Person {name:'Hugo Weaving', born:1960})
 7 CREATE (LillyW:Person {name:'Lilly Wachowski', born:1967})
 8 CREATE (LanaW:Person {name:'Lana Wachowski', born:1965})
 9 CREATE (JoelS:Person {name:'Joel Silver', born:1952})
10 
11 //create the relationships between the roles and actors
12 CREATE
13 (Keanu)-[:ACTED_IN {roles:['Neo']}]->(TheMatrix),
14 (Carrie)-[:ACTED_IN {roles:['Trinity']}]->(TheMatrix),
15 (Laurence)-[:ACTED_IN {roles:['Morpheus']}]->(TheMatrix),
16 (Hugo)-[:ACTED_IN {roles:['Agent Smith']}]->(TheMatrix),
17 (LillyW)-[:DIRECTED]->(TheMatrix),
18 (LanaW)-[:DIRECTED]->(TheMatrix),
19 (JoelS)-[:PRODUCED]->(TheMatrix)
20 
21 CREATE (Emil:Person {name:"Emil Eifrem", born:1978})
22 CREATE (Emil)-[:ACTED_IN {roles:["Emil"]}]->(TheMatrix)

 導入成功!

 湯姆·漢克斯參演的電影

 二、查詢語句

1. 按名字查找某個實體 

eg1: Find the actor named "Tom Hanks"...

 neo4j $ MATCH (tom {name: "Tom Hanks"}) RETURN tom 

 eg2: Find the movie with title "Cloud Atlas"...

 neo4j $ MATCH (cloudAtlas {title: "Cloud Atlas"}) RETURN cloudAtlas 

2. 使用 limit 關鍵字限制查詢實體個數

eg: Find 10 people...

 neo4j $ MATCH (people:Person) RETURN people.name LIMIT 10 

3. 使用 where 條件查詢語句

eg: Find movies released in the 1990s...

neo4j $ MATCH (nineties:Movie) 
     WHERE nineties.released >= 1990 AND nineties.released < 2000
     RETURN nineties.title

4. 已知一節點和關系查找另一節點信息

eg1: List all Tom Hanks movies...

neo4j $ MATCH (tom:Person {name: "Tom Hanks"})-[:ACTED_IN]->(tomHanksMovies) 
     RETURN tom,tomHanksMovies

 eg2: Who directed "Cloud Atlas"?

 neo4j $ MATCH (directors)-[:DIRECTED]->(cloudAtlas {title: "Cloud Atlas"}) 
      RETURN directors.name

 or

 neo4j $ MATCH (cloudAtlas {title: "Cloud Atlas"})<-[:DIRECTED]-(directors) 
      RETURN directors.name

5. 查詢某個節點上以同樣關系連接的節點信息

eg: Tom Hanks' co-actors...

neo4j $ MATCH (tom:Person {name:"Tom Hanks"})-[:ACTED_IN]->(m)<-[:ACTED_IN]-(coActors) 
     RETURN coActors.name

 6. 查詢與某結點有關系的所有結點信息

eg: How people are related to "Cloud Atlas"...

 neo4j $ MATCH (people:Person)-[relatedTo]-(:Movie {title: "Cloud Atlas"}) 
    RETURN people.name, Type(relatedTo), relatedTo

7. 查找兩個節點的最短路徑(不論任何關系)

eg: Bacon path, the shortest path of any relationships to Meg Ryan

 neo4j $ MATCH p=shortestPath( (bacon:Person {name:"Kevin Bacon"})-[*]-(meg:Person {name:"Meg Ryan"}))
     RETURN p

 8. 查詢兩個結點的中介結點信息

eg: Find someone to introduce Tom Hanks to Tom Cruise

neo4j $ MATCH (tom:Person {name:"Tom Hanks"})-[:ACTED_IN]->(m)<-[:ACTED_IN]-(coActors),
     (coActors)-[:ACTED_IN]->(m2)<-[:ACTED_IN]-(cruise:Person {name:"Tom Cruise"})
     RETURN tom, m, coActors, m2, cruise

9. 刪除所有結點及關系

 neo4j $ MATCH (n) DETACH DELETE n or

 neo4j $ MATCH (n)-[m] DELETE n, m 

 

三、總結

1. 查詢一般格式:(keyword  、variable 、  entity or relationship)

 MATCH (sub:subject)-[pre:predicate]->(obj:object) RETURN sub, pre, obj 

2. 如果是單向關系需要注意箭頭方向

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM