Neo4j基础知识学习+案例分析实战

根据上一篇文章 Neo4j安装和启动教程 更改完密码操作后进入如下页面
Alt
点击图中左侧五角星,找到Sample Scripts示例脚本下的Exmaple Graphs示例图,运行Movie Graph(电影图表是一个将演员和导演通过合作的电影而联系在一起的)
Alt

一、Neo4j CQL常见操作指令

详细操作指令学习网址

NumberCQL命令用法
1CREATE创建:增加节点、关系和属性
2MATCH匹配:检索相关节点,关系和属性数据
3DELETE删除:删除节点和关系
4RETURN返回:返回查询的结果
5WHERE条件:提供过滤检索数据的条件
6SET设置:添加或更改标签
7REMOVE移除:删除节点和关系的属性
8ORDER BY排序:排序检索的数据
9LIMIT限制:限制查询的数量
命名规范
关键字—全部大写
关系名—全部大写
标签名—首字母大写
属性名和变量名—小写

1、增加

增加一个节点:
CREATE (me:Person {name:'我', born:2001})

在这里插入图片描述

增加关系和属性:
CREATE(boy:Person {name:'男孩', born:2001})-[:女朋友 {girlfriend:['瑞雪']}]->(girl:Person {name:'女孩', born:2003})

2、删除

删除一个节点:
MATCH (me:Person {name:'我', born:2001}) DELETE me

删除关系
MATCH(boy:Person {name:'男孩', born:2001})-[girlfriend:女朋友]->(girl:Person {name:'女孩', born:2003}) DELETE girlfriend


注意:如果存在关系,节点不能被删除。

3、改变

加上标签
MATCH (boy:Person) where id(boy)=1 set boy:帅 RETURN boy

加上属性
MATCH(boy:帅)where id(boy)=1 set boy.帅气值=100 RETURN  boy

修改属性
MATCH(boy:帅)where id(boy)=1 set boy.帅气值=101 RETURN  boy

4、查询

新增节点与关系
CREATE(boy:Dog {name:'小狗', born:2001})-[:女朋友 {girlfriend:['喜欢']}]->(girl:Cat {name:'小猫', born:2003})

查找关系
MATCH(boy:Dog)-[:女朋友]->(girl:Cat) RETURN  boy,girl

MATCH和RETURN是Cypher关键字,boy是变量,保存节点,:Dog是节点标签,[:女朋友]是关系类型

二、电影图谱案例

1、创建

将电影数据插入到图表中:右边是一个巨大的代码块,包含由多个Create子句组成的单个Cypher查询语句。这将创建电影图形。

列出关系型数据库与图数据库对应的概念以便理解Cypher:  
MySQLNeo4j
Database 关系型数据库Graph 图数据库
Table 表格Lable 标签 boy:Person
Volumn 列Property 属性 {name:‘男孩’, born:2001}
Row 行Node 节点 (boy:Person{name:‘男孩’, born:2001})

点击灰色代码块,注意它被复制到上面的编辑器,点击编辑器右上角的播放按钮执行等待查询完成显示。

节点Node含义(图数据库中的一个具体的实体)
橙色代表一位电影的参演者或者导演
紫色代表一个电影
标签Label含义(同一类节点的组合)
Person代表所有的电影的参演者或者导演
Movie代表所有的电影
关系Relationship含义(图数据库中节点之间的连接)
ACTED_IN代表某人参演某电影
DIRECTED代表某人导演了某电影
属性Property含义(对节点以及关系的一种说明)
Personborn:出生日期, name:姓名
Movierelease:发行年份, tagline:介绍, title:电影名称


注意:每次运行将数据添加到当前数据库!

2、查找

检索单个电影和演员:单击任何查询示例—>运行来自编辑器的查询—> 请注意语法模式—>尝试查看其他电影或演员

找到名叫“Tom Hanks”的演员

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

在这里插入图片描述
找到标题为“Cloud Atlas”的电影

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


找到10个人

查询Person标签的所有节点的指定的属性name,并限制查询人数数量10
MATCH (people:Person) RETURN people.name LIMIT 10


查找20世纪90年代上映的电影

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

3、检索

在图中查找到相关的演员和导演:演员是在电影中表演的人,导演是指导电影的人。
列出所有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 (cloudAtlas {title: "Cloud Atlas"})<-[:DIRECTED]-(directors) RETURN directors.name

人们是如何与“Cloud Atlas”联系在一起的

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

4、路径

Bacon Path:可变长度模式的内置的最短路径的算法

电影和演员离Kevin Bacon最多4步之遥

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


查找和Meg Ryan的最短关系路径

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

5、推荐

让我们为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]->()<-[:ACTED_IN]-(cocoActors) AND tom <> cocoActors
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

6、清理

完成实验后,可以删除电影数据集。
同时删除节点和关系,将删除所有Person和Movie节点!

删除所有Movie和Person节点及其关系

MATCH (n) DETACH DELETE n


证明电影图表已经消失了

查询所有数据
MATCH (n) RETURN n

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

瑞雪兆我心

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

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

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

打赏作者

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

抵扣说明:

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

余额充值