当前位置:   article > 正文

neo4j 官方入门实例介绍——“电影关系图”_neo4j关系图

neo4j关系图

首先打开neo4j 管理界面,点击图片中的箭头Write Code链接进入代码书写引导界面,然后点击Movie Graph下面的Create a graph链接进入。
在这里插入图片描述
在这里插入图片描述
进来后会有一堆英文的介绍,这个实例将指导你学习以下入门操作:

  • 创建图数据库:将电影、演员、导演等图数据导入到Neo4j数据库中;
  • 检索节点:检索特定电影和演员;
  • 查询关系:发现相关的演员和导演;
  • 查询相关路径:查询他们之间的关系路径

在这里插入图片描述

1.创建图数据

单击界面中右侧换页箭头会看到一些代码块,点击它,这些代码将自动输入到命令区,再点击运行按钮,就创建完成了。
在这里插入图片描述
【程序1-1】创建电影节点(官方程序中的第1行)
创建一个Movie节点,这个节点上带有三个属性 {title:‘The Martix’, released:1999, tagline:‘Welcome to the Real World’},分别表示这个电影的标题:The Matrix、发布时间:1999、宣传词:Welcome to the Real World。

CREATE (TheMatrix:Movie {title:'The Martix', released:1999, tagline:'Welcome to the Real World'})
  • 1

【程序1-2】创建人物节点(官方程序第2行)
下面程序创建了一个Person节点,节点带有两个属性{name:‘Keanu Reeves’, born:1964}。

CREATE (Keanu:Person {name:'Keanu Reeves', born:1964})
  • 1

【程序1-3】创建演员、导演关系(官方程序9-16行)
(Keanu)-[:ACTED_IN {roles:[‘Neo’]}]->(TheMatrix)意思是创建一个演员参演电影关系,演员Keanu以角色roles:[‘Neo’]参演ACTED_IN到电影TheMatrix中。
(LillyW)-[:DIRECTED]->(TheMatrix)意思是创建导演与电影的关系,即LillyW导演了[:DIRECTED]电影TheMatrix。

CREATE
(Keanu)-[:ACTED_IN {roles:['Neo']}]->(TheMatrix),
(Carrie)-[:ACTED_IN {roles:['Trinity']}]->(TheMatrix),
(Laurence)-[:ACTED_IN {roles:['Morpheus']}]->(TheMatrix),
(Hugo)-[:ACTED_IN {roles:['Agent Smith']}]->(TheMatrix),
(LillyW)-[:DIRECTED]->(TheMatrix),
(LanaW)-[:DIRECTED]->(TheMatrix),
(JoelS)-[:PRODUCED]->(TheMatrix)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

执行完全部指令后,这个数据库中的电影、演员、导演、制片商的关系就创建出来了。完整的图如下:
在这里插入图片描述

2.查找节点

【程序2-1】查找名为“Tom Hanks”的人物

MATCH (tom {name:'Tom Hanks'}) RETURN tom
  • 1

在这里插入图片描述
可以看到这个节点被查找到了,点击节点的图标会看到节点的属性,下方。
【程序2-2】查找名为“Cloud Atlas”的电影

MATCH (cloudAtlas {title:"Cloud Atlas"}) RETURN cloudAtlas
  • 1

在这里插入图片描述
【程序2-3】随机查找多个人物的人名

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

在这里插入图片描述
在本次结果中,由于只返回name属性,所以就不用图形化的形式返回。
【程序2-4】查找1990年到2000年发行的电影的名称

MATCH (nineties:Movie)
WHERE nineties.released > 1990 AND nineties.released < 2000
RETURN nineties.title
  • 1
  • 2
  • 3

在这里插入图片描述

3.查询关系

【程序3-1】查找‘Tom Hanks’参演过的电影名称

MATCH (tom:Person{name:"Tom Hanks"}) -[:ACTED_IN] -> (tomHanksMovies) return tom,tomHanksMovies
  • 1

在这里插入图片描述
【程序3-2】查找谁导演了电影“Cloud Atlas”

MATCH (cloudAtlas{title:'Cloud Atlas'}) <- [:DIRECTED] - (directors)
return directors.name
  • 1
  • 2

在这里插入图片描述
【程序3-3】查找与Tom Hanks同出演过电影的人
首先通过匹配节点类型为Person、属性为{name:‘Tom Hanks’}的节点,然后匹配此节点通过[:ACTED_IN]关系指向的节点m,并且同时匹配某个节点coActors也通过[:ACTED_IN]关系指向的节点m,然后返回m的name属性。

match (tom:Person {name:'Tom Hanks'}) - [:ACTED_IN] ->(m)<-[:ACTED_IN] - (coActors)
return coActors.name
  • 1
  • 2

在这里插入图片描述
【程序3-4】查找与电影“Cloud Atlas”相关的所有人

match (people:Person) - [relatedTo] - (:Movie{title:'Cloud Atlas'})
return people.name, Type(relatedTo), relatedTo
  • 1
  • 2

在这里插入图片描述
【程序3-5】查找与演员“Kevin Bacon”存在4条及以内关系的任何演员和电影

match (bacon:Person{name:'Kevin Bacon'}) - [*1..4] - (hollywood)
return distinct hollywood
  • 1
  • 2

在这里插入图片描述
【程序3-6】查找与演员Kevin Bacon与Meg Ryan之间的最短关系路径
首先匹配节点类型为Person、属性为{name:‘Kevin Bacon’}的节点,再匹配节点类型为Person、属性为{name:‘Meg Ryan’}的节点,两者用[*]关系操作符相连代表两者存在任意深度的关系,然后再使用shortestPath方法返回两者在所有深度关系遍历路径中最短的一条。

Match p = shortestPath((bacon:Person{name:'Kevin Bacon'}) - [*] - (meg:Person{name:'Meg Ryan'}))
return p
  • 1
  • 2

在这里插入图片描述

4.结语

官方例子到这就结束了,以后有机会继续更新一些我正在学的py2neo操作neo4j的一些用法,希望对你们有所帮助,并指出我的不足之处,相互学习。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/369762
推荐阅读
相关标签
  

闽ICP备14008679号