Neo4j實例:電影關係圖

Neo4j管理界面提供了一個官方入門實例“電影關係圖”,點擊下述步驟。
在這裏插入圖片描述
在這裏插入圖片描述
單擊實例引導頁換頁箭頭,單擊代碼塊即自動填充,點擊play按鍵即可運行創建關係。
在這裏插入圖片描述

一、檢索節點

例1、查找名爲Tom Hanks的人

MATCH (TomH {name:"Tom Hanks"})
RETURN TomH

該命令使用match查找匹配條件{name:“Tom Hanks”}的節點並返回。
在這裏插入圖片描述

例2、查找名爲Cloud Atlas的電影

MATCH (cloud {title:"Cloud Atlas"})
RETURN cloud

例3、隨機查找10個人名

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

在這裏插入圖片描述
例4、查找1990到2000年間發行的電影

MATCH (movies:Movie) 
WHERE movies.released >1990 AND movies.released<2000
RETURN movies.title

二、查詢關係

例1、查找Tom參演過的電影

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

首先匹配節點類型爲Person、屬性爲{name:“Tom Hanks”}的節點,然後匹配此節點具有關係[ACTED_IN],且此關係指向某個電影節點的節點。
在這裏插入圖片描述
例2、查找誰導演了電影Cloud

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

首先匹配屬性爲{title:“Cloud Atlas”}的節點,然後匹配此節點具有關係[:DIRECTED]且是被某個節點指向的節點,再返回匹配節點的name屬性。

例3、查找與Tom同出演過電影的人

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

例4、查找與電影Cloud相關的所有人

MATCH (cloud:Movie {title:"Cloud Atlas"})-[relation]-(people:Person)
RETURN people.name,type(relation),relation

在這裏插入圖片描述
例5、查找與Kevin存在4條及以內關係的任何演員和電影

MATCH (bacon:Person {name:"Kevin Bacon"})-[*1..4]-(hollywood) 
RETURN DISTINCT hollywood

在這裏插入圖片描述
例6、查找Kevin與Meg間最短關係路徑

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

用shortestPath方法可以返回兩者在所有深度關係遍歷路徑中最短的一條
在這裏插入圖片描述

應用

爲Tom推薦合作伙伴

一個較好的方法是通過Tom的人脈(合作伙伴),向其推薦其合作伙伴曾合作過的對象。

一、查找未合作過的

MATCH (tom:Person {name:"Tom Hanks"})-[:ACTED_IN]->(m)<-[:ACTED_IN]->(coActors), (coActors)-[:ACTED_IN]->(m2)<-[:ACTED_IN]-(cocoActors)
WHERE NOT (tom)-[:ACTED_IN]->(m2)
RETURN cocoActors.name AS Recommended,count(*) AS Strength
ORDER BY Strength DESC

二、找人將Tom Hanks介紹給Tom Cruise

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

在這裏插入圖片描述

清空數據庫

MATCH (a:Person),(m:Movie)
OPTIONAL MATCH (a)-[r1]-(),(m)-[r2]-()
DELETE a,r1,m,r2

查詢任意數據,確認是否清空

MATCH (n) RETURN n
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章