neo4j入门教程

实例

就是根据neo4j一开始自己给的电影实例

创建图数据

创建电影节点

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

使用create指令创建一个Movie 节点,节点带有三个属性分别是title(电影标题),released(发布日期),tagline(宣传语)

创建人物节点

CREATE (Keanu:Person {name:'Keanu Reeves', born:1964})
      CREATE (Carrie:Person {name:'Carrie-Anne Moss', born:1967})
      CREATE (Laurence:Person {name:'Laurence Fishburne', born:1961})
      CREATE (Hugo:Person {name:'Hugo Weaving', born:1960})
      CREATE (LillyW:Person {name:'Lilly Wachowski', born:1967})
      CREATE (LanaW:Person {name:'Lana Wachowski', born:1965})
      CREATE (JoelS:Person {name:'Joel Silver', born:1952})

看第一行,使用create指令,创建了一个Person节点,节点带有两个属性分别是name,born,其他类似。

创建演员、导演关系


      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)

上面代码除了使用create指令外,还使用了剪头运算符,(Keanu)-[:ACTED_IN {roles:['Neo']}]->(TheMatrix),这一行的意思是,创建一个演员参演电影的关系,演员Keanu以角色Neo参演电影TheMatrix。

(LillyW)-[:DIRECTED]->(TheMatrix)这一行的意思是创建导演与电影的关系,LillyW导演了电影TheMatrix。

检索节点

查找人员

查找名为Ton Hanks 的人物

match(tom{name:"Tom Hanks"}) Return tom

随机查找多个人物的人名

随机查找10个人

match(people:Person) return people.name LIMIT 10

查找电影节点

查找名为Cloud Atlas的电影

match(cloudAtlas{title:"Cloud Atlas"} return cloudAtlas

查找多个电影

查找1990年到2000年发行的电影的名称

match(nineties:Movie)
where nineties.released > 1990AND nineties.released <2000
retuen nineties.title 

查询关系

查找演员参演的电影

查找Tom Hanks 参演过的电影的名称

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

查找谁导演了电影Cloud Atlas

match(cloudAtlas{title:"Cloud Atlas"})<-[:DIRECTED]-(directors)
return directors.name

查找与Tom Hanks同初言过电影的人

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

查找与电影Cloud Atlas相关的所有人

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

查询关系路径

查找与演员Kevin Bacon存在4条及以内关系路径的任何演员和电影

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

这里是通过使用shortetPath()方法返回最短路径。

思考和练习

基于这个电影关系图实例,考虑一个现实问题:要为Tom Hanks的推荐神的合作伙伴,一个比较好的办法就是通过认识Tom Hanks的人来寻找新的合作伙伴。

具体步骤:

第一步,先找到Tom Hanks还没有合作过的、但是Tom Hanks的合作伙伴曾经合作过的演员。

第二步找到一个可以想她的潜在合作者介绍Tom Hanks的人。

查找没有与Tom Hanks合作过的演员

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 Strangth 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

结果如下图所示。

清空数据库

清空所有Person,Movie节点及其所有关系

match(a:Person),(m:Movie)
optional match (a) - [r1]-(),(m)-(r2)-()
delete a,r1,m,r2

查询任意数据

match(n) return n 

通过这行代码,可以看一下,上边的节点、关系是不是全都删除了。

关系不能创建多个类型(标签),但是match的时候可以type1|type2.

  • 13
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

埠渝23

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值