• 查找名为"Cloud Atlas"的电影
match(cloudAtlas {title:"Cloud Atlas"}) return cloudAtlas
  • 查找1990年-2000年发行的电影的名称
match(movies:Movie) where movies.released > 1990 and movies.released <2000 return movies.title
  • 查找"Tom"参演过的电影,返回电影名,tom,关系
match(ps:Person {name:"Tom"})-[ac:acted_in]->(movie:Movie) return ps,ac,movie.title
  • 查找谁导演了电影"Cloud Atlas"
match(ps:Person)-[:directed]->(movie:Movie {title:"Cloud Atlas"}) return ps.name
  • 查找与"tom"同出演过电影的人
match(tom:Person {name:"Tom"}) -[:acted_in]->(m:Movie)<-[:acted_in]-[other:Person] return other.name
  • 查找与电影"Cloud Atlas"相关的所有人
match (people:Person) -[relatedTo]-(:Movie {title:"Cloud Atlas"})
return people.name, Type(relatedTo),relatedTo Type 返回关系的标签,比如是参演了电影还是导演了电影还是监制.而 relatedTo 返回的是关系的属性
这里所说的标签,就是书里所说的类型
执行过程:
首先匹配节点类型为Person类型的节点,然后再匹配节点类型为Movie类型,且节点属性title为Cloud Atlas的电影节点
最后匹配他们之间的所有关系,返回的结果是三列,对应返回的字段
╒══════════════════╤═════════════════╤══════════════════════════════════════════════════════════════════════╕
│"people.name" │"Type(relatedTo)"│"relatedTo" │
╞══════════════════╪═════════════════╪══════════════════════════════════════════════════════════════════════╡
│"Jessica Thompson"│"REVIEWED" │{"summary":"An amazing journey","rating":95} │
├──────────────────┼─────────────────┼──────────────────────────────────────────────────────────────────────┤
│"Jim Broadbent" │"ACTED_IN" │{"roles":["Vyvyan Ayrs","Captain Molyneux","Timothy Cavendish"]} │
├──────────────────┼─────────────────┼──────────────────────────────────────────────────────────────────────┤
│"Halle Berry" │"ACTED_IN" │{"roles":["Luisa Rey","Jocasta Ayrs","Ovid","Meronym"]} │
├──────────────────┼─────────────────┼──────────────────────────────────────────────────────────────────────┤
│"Lilly Wachowski" │"DIRECTED" │{} │
├──────────────────┼─────────────────┼──────────────────────────────────────────────────────────────────────┤
│"Tom Tykwer" │"DIRECTED" │{} │
├──────────────────┼─────────────────┼──────────────────────────────────────────────────────────────────────┤
│"Hugo Weaving" │"ACTED_IN" │{"roles":["Bill Smoke","Haskell Moore","Tadeusz Kesselring","Nurse Noa│
│ │ │kes","Boardman Mephi","Old Georgie"]} │
├──────────────────┼─────────────────┼──────────────────────────────────────────────────────────────────────┤
│"Tom Hanks" │"ACTED_IN" │{"roles":["Zachry","Dr. Henry Goose","Isaac Sachs","Dermot Hoggins"]} │
├──────────────────┼─────────────────┼──────────────────────────────────────────────────────────────────────┤
│"David Mitchell" │"WROTE" │{} │
├──────────────────┼─────────────────┼──────────────────────────────────────────────────────────────────────┤
│"Lana Wachowski" │"DIRECTED" │{} │
├──────────────────┼─────────────────┼──────────────────────────────────────────────────────────────────────┤
│"Stefan Arndt" │"PRODUCED" │{} │
└──────────────────┴─────────────────┴──────────────────────────────────────────────────────────────────────┘
  • 查找与演员"Kevin Bacon" 存在4条及以内关系的任何演员和电影
match(people:People {name:"Kevin Bacon"}) - [*1..4] - (something)
return distinct something 执行过程:
首先匹配节点类型为People,属性name为Kevin Bacon的节点,然后将关系深度限制为从1到4再进行遍历,最后返回匹配的所有节点(去重)
  • 查找与演员Kevin Bacon与Meg Ryan之间的最短路径
match p= shortestPath((:Person {name:"Kevin Bacon"}) -[*]- (:Person {name:"Meg Ryan"}))  return p

shortestPath 方法是返回找出返回的所有路径中最短的一条

关系推荐小案例

比如要为Tom推荐新的合作伙伴,一个比较好的办法就是通过认识Tom的人的人脉来寻找新的合作伙伴
分析:

  1. 先找到Tom还没有合作过的演员,但Tom的合作伙伴曾经与其合作过
  2. 找到一个可以向Tom介绍新合作伙伴的人 或者说 找到一个可以向新合作伙伴介绍Tom的人
  • 查找没有与Tom合作过的演员
match(tom:Person {name:"Tom Hanks"}) -[:ACTED_IN]->(m:Movie) <-[:ACTED_IN]-(middleman:Person),
(middleman:Person)-[:ACTED_IN]->(n:Movie)<-[:ACTED_IN]-(new_friend:Person)
where not (tom) -[:acted_in]->(n)
return new_friend as new , count(*) as Strength
order by Strength desc ╒═════════════════════════════════════════════╤══════════╕
│"new" │"Strength"│
╞═════════════════════════════════════════════╪══════════╡
│{"name":"Tom Hanks","born":1956} │12 │
├─────────────────────────────────────────────┼──────────┤
│{"name":"Zach Grenier","born":1954} │5 │
├─────────────────────────────────────────────┼──────────┤
├─────────────────────────────────────────────┼──────────┤
│{"name":"Jack","born":1962} │5 │
├─────────────────────────────────────────────┼──────────┤ 分析:
count(*) 是新伙伴与中间人合作的次数
然后根据合作的次数进行排序
  • 找人将Tom介绍给Jack
match(tom:Person {name:"Tom"}) -[:ACTED_IN] -> (m:Movie) <-[:ACTED_IN] - (middleman:Person),
(middleman:Person) -[:ACTED_IN] -> (n:Movie) <-[:ACTED_IN] - (jack:Person {name:"Jack"})
return tom,m,middleman,n,jack

清空数据库

注意有关系存在的节点,必须要清除关系后才能清除节点,或者同时清除都可以,这就相当于mysql中的外键联系,必须要删除外键后才能删除数据
下面演示删除所有Person,Movie节点及其所有关系

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

节点写(),代表任何类型的节点.
关系没有箭头,代表任何方向的关系.
关系没有写类型,代表存在的任何关系 清空数据之后,如果想要确认是否都删除完毕,可以使用全量查询检测一下
match(n) return (n) 返回所有类型的所有节点

最新文章

  1. ASP.NET Core管道深度剖析(3):管道是如何处理HTTP请求的?
  2. sql server 读取excel里的数据
  3. mvc实现上传视频预览
  4. Android自动化测试之MonkeyRunner
  5. iOS开发---iPhone SDK 包含哪些东西?
  6. Socket编程基本流程实践
  7. JS 去字符串空格 总结
  8. SAP ABAP 日期相关函数
  9. POJ 3694 Network(无向图求桥+重边处理+LCA)
  10. AnsiString用法(转)
  11. 全网最全的Windows下Anaconda2 / Anaconda3里正确下载安装OpenCV(离线方式和在线方式)(图文详解)
  12. vector底层实现
  13. spring配置详解-连接池配置
  14. MySQL 安装方法
  15. SpringMVC工作原理2(代码详解)
  16. [ 原创 ]新手作品-我的第一款安卓自学作品---YY音乐诞生了
  17. (转载)GRASP职责分配原则
  18. 图论:Prufer编码
  19. Python开发基础-Day5-字符编码、文件处理和函数基础(草稿)
  20. Shell脚本之监视指定进程的执行状态

热门文章

  1. 轻松搞定word中让人抓狂的自动编号
  2. python 逗号分隔值文件的操作
  3. oracle交互命令
  4. 洛谷1758 BZOJ1566 管道取珠题解
  5. Libev源码分析02:Libev中的IO监视器
  6. 洛谷 3177 [HAOI2015] 树上染色
  7. fakeroot与sudo的区别
  8. torch.optim优化算法理解之optim.Adam()
  9. Lifecycle mapping &quot;org.eclipse.m2e.jdt.JarLifecycleMapping&quot; Eclipse Maven报错
  10. Python--day48--ORM框架SQLAlchemy之子查询