1. neo4j介绍
Neo4j是一个世界领先的开源图形数据库。 它是由Neo技术使用Java语言完全开发的。

1.1 下载

1.2 拷贝激活码

1.3 安装

1.4 打开

1.5 初始化运行环境
这里需要等待较长的时间

1.6 neo4j主界面

2. neo4j 基础操作
为了快速入门那neo4j,我们通过官方的
guide来快速入门

以下内容将分为6部分
- Match(匹配)
- Create(创建)
- Delete(删除)
- Merge(合并)
- List(列表)
- Where(条件过滤)
- Match进阶
- Recommend(推荐)
2.1 Match(匹配)操作
查询
name(名字)为Tom Hanks的节点
MATCH (a:Person {name:'Tom Hanks'}) RETURN a

2.2 Create(创建)操作
创建一个
Person(人)节点,name(名字)为Brie Larson,born(出生日期)为1989
CREATE (a:Person {name:'Brie Larson', born:1989}) RETURN a

创建一个
Movie(电影)节点,title(标题)为Captain Marvel,released(发布时间)为2019,tagline(标语)为Everything begins with a (her)o.
CREATE (a:Movie {title:'Captain Marvel', released:2019,
tagline:'Everything begins with a (her)o.'}) RETURN a

2.3 Delete(删除)操作
作用
- 删除创建次数过多的任何人或电影
- 注意此查询将删除节点和关系
删除
name(名字)为Brie Larson的Person(人)节点
MATCH (a:Person {name:'Brie Larson'}) DETACH DELETE a

MATCH (a:Movie {title:'Captain Marvel'}) DETACH DELETE a

2.4 Merge(合并)操作
创建或者更新节点
合并操作通常与匹配(match)和更新(update)一起使用,当使用
ON CREATE的时候会新创建一个节点,使用ON MATCH的时候会更新已有的的节点
MERGE (a:Person {name:'Brie Larson'})
ON CREATE SET a.born = 1989
ON MATCH SET a.stars = COALESCE(a.stars, 0) + 1
RETURN a

Match(匹配)一个Person(人)和一个Movie(电影)- 指定一个
Person(人)的r.roles(角色)在这个Movie(电影)里
MATCH (a:Person {name:'Brie Larson'}), (b:Movie {title:'Captain Marvel'})
MERGE (a)-[r:ACTED_IN]->(b) SET r.roles = ['Carol Danvers']
RETURN a,r,b

如果之前进行了
Delete操作,则需要把删除的节点添加进来,不然运行会无结果
CREATE (a:Movie {title:'Captain Marvel', released:2019,
tagline:'Everything begins with a (her)o.'}) RETURN a
CREATE (a:Person {name:'Brie Larson', born:1989}) RETURN a
MATCH (a:Person {name:'Brie Larson'}), (b:Movie {title:'Captain Marvel'})
MERGE (a)-[r:ACTED_IN]->(b) SET r.roles = ['Carol Danvers']
RETURN a,r,b
2.5 List(列表)操作
列表操作
- 在此高级合并中,列表用于首先
<>过滤当前角色, - 将过滤后的角色列表与当前角色合并成一个新列表
MATCH (a:Person {name:'Brie Larson'}), (b:Movie {title:'Captain Marvel'})
MERGE (a)-[r:ACTED_IN]->(b)
SET r.roles = [x in r.roles WHERE x <> 'Captain Marvel'] + ['Captain Marvel']
RETURN a,r,b

2.6 Where(条件过滤)
where操作主要用来做过滤,使用和sql中的where类似
- 匹配出
name为'Tom'开头的Person(人)结果集
MATCH (a:Person) WHERE a.name STARTS WITH 'Tom' RETURN a

MATCH(匹配)出released发布时间大于1990,小于2000的Movie(电影)节点
MATCH (a:Movie) WHERE a.released > 1990 AND a.released < 2000 RETURN a

2.7 Match进阶
操作说明:
MATCH(匹配)出Movie(电影)中存在人名为Tom Hanks的节点- 其中是
ACTED_IN表示节点接的关系,其中有一个属性叫做roles角色,在这里表示电影中存在角色的关系
MATCH (a:Person {name:'Tom Hanks'})-[:ACTED_IN]->(m:Movie) RETURN a,m

操作说明:
- 标题为
Cloud Atlas的Movie(电影)DIRECTED导演
MATCH (m:Movie {title:'Cloud Atlas'})<-[:DIRECTED]-(d:Person) RETURN d

操作说明:
- 查找与
Tom Hanks一起ACTED_IN演过电影的人,打印出人名
MATCH (a:Person {name:'Tom Hanks'})-[:ACTED_IN]->(m)<-[:ACTED_IN]-(c) RETURN c.name

操作说明:
- 查找出于电影
Cloud Atlas有联系的people.name人名,type(relatedTo)关系类型,relatedTo关系信息
MATCH (people:Person)-[relatedTo]-(:Movie {title:'Cloud Atlas'})
RETURN people.name, type(relatedTo), relatedTo

操作说明:
- 好莱坞电影(hollywood)和演员凯文·培根(Kevin Bacon)最多4跳的结果
MATCH (bacon:Person {name:"Kevin Bacon"})-[*1..4]-(hollywood)
RETURN DISTINCT hollywood

操作说明:
- 演员
Kevin Bacon与演员Al Pacino的最短路径
MATCH p=shortestPath(
(bacon:Person {name:"Kevin Bacon"})-[*]-(a:Person {name:'Al Pacino'})
)
RETURN p

2.8 Recommend(推荐)
操作说明:
扩展合作者,去查找尚未与汤姆·汉克斯(Tom Hanks)合作,但是和他合作者合作过的人
MATCH (a:Person {name:'Tom Hanks'})-[:ACTED_IN]->(m)<-[:ACTED_IN]-(coActors),
(coActors)-[:ACTED_IN]->(m2)<-[:ACTED_IN]-(cocoActors)
WHERE NOT (a)-[:ACTED_IN]->()<-[:ACTED_IN]-(cocoActors) AND a <> cocoActors
RETURN cocoActors.name AS Recommended, count(*) AS Strength ORDER BY Strength DESC

操作说明:
寻找可以将Tom Hanks介绍给Tom Cruise的人
MATCH (a:Person {name:'Tom Hanks'})-[:ACTED_IN]->(m)<-[:ACTED_IN]-(coActors),
(coActors)-[:ACTED_IN]->(m2)<-[:ACTED_IN]-(other:Person {name:'Tom Cruise'})
RETURN a, m, coActors, m2, other

参考
关注公众号,持续更新哟~


本文档详细介绍了Neo4j图形数据库的下载、安装和初始化过程,并逐步展示了如何进行匹配、创建、删除、合并、列表、条件过滤等基础操作。此外,还深入探讨了匹配的进阶用法,包括推荐系统的实现。通过实例,读者可以快速掌握Neo4j的基本操作和查询语法。
784

被折叠的 条评论
为什么被折叠?



