一、简介
Neo4j是一个高性能的,基于java开发的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中;它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎。
Neo4j分为企业版和社区版,企业版可以创建多个数据库,链接多个数据库,但是收费……;社区版只能链接一个数据库,所以社区版不支持创建数据库命令。
Neo4j部署后默认创建名字为 neo4j 的数据库,可以直接链接这个数据库。

二、使用 Docker 安装 Neo4j
官网文档:https://neo4j.com/docs/
官网下载地址:https://neo4j.com/download-center
国内镜像地址(所有版本都有):https://we-yun.com/doc/neo4j/
1、安装 Docker Desktop
2、使用 Docker Desktop 安装 Neo4j 镜像

# 拉取 Neo4j 镜像
docker pull neo4j:5.26.2

# 启动 并 设置 neo4j 挂载
docker run -it -d -p 7474:7474 -p 7687:7687 -v /home/neo4j/data:/data -v /home/neo4j/logs:/logs -v /home/neo4j/conf:/var/lib/neo4j/conf -v /home/neo4j/import:/var/lib/neo4j/import -v /home/neo4j/plugins:/var/lib/neo4j/plugins -e NEO4J_AUTH=neo4j/password --name neo4j neo4j:5.26.2


3、访问界面
访问地址:
http://localhost:7474/browser/


4、Cypher 和 使用 Neo4J
在这里有的小伙伴就会想我不太会使用Docker 能不能安装其他版本的呀?当然这个也是有的,小编之前也有写过一篇关于本地安装和怎么使用Neo4J的详细文章,大家有需要可以通过下面链接进行学习。
请看这里:Noe4J 超级详细的安装与使用
4.1、输入 CQL语句
没错,就是在大家最喜欢的美元符号那里输入 CQL语句的。这里我们拿学生和老师举例来说明。

4.2、增加节点
Neo4j使用的是create 命令进行增加,就类似与MySQL中的insert。
语法如下:
create (node-name:label-name)
create (node-name:label-name { property1-name:property1-Value, …, property3-name:property3-Value})
- node - name:它是我们要创建的节点名称
- label - name:它是我们要创建的标签名称
- property1 - name:就是属性名称
- property1 - Value:就是属性值
1. 创建一个学生节点(只有节点,没有属性):
create (s:Student)
在美元符号输入完上面的CQL后,回车 或者 点击右侧的三角号执行按钮,会看到如下结果:

2.创建一个学生节点(创建具有属性的节点)
创建一个id为10000,名字为张三,年龄为18岁,性别为男的学生节点
create (s:Student{id:10000, name:"张三",age:18,sex:1})
执行后,会看到如下的结果:

4.3、查询
我们在上一步创建了没有属性的节点和有属性的节点,那么问题来了,我们怎么查看呢?查询咯~
Neo4j使用的是match … return … 命令进行查询,就类似与MySQL中的select。
我们查询刚刚创建的节点信息。
1.全部查询学生
match (s:Student) return s
从上图可以看到我们刚刚创建的两个节点,一个是没有属性节点,一个是有属性的节点。两个节点是以图的形式展示,我们也可以切换左边的Graph(图)、Table(表格)、Text(文本)等来以不同的形式展示。

2.查询全部或者部分字段
只需要把要展示的字段以节点名 + 点号 + 属性字段 拼接即可,如下:
match (s:Student) return s.id,s.name,s.age,s.sex
这样就清楚的看到我们插入的学生属性信息。因为有一个是没有属性的节点,所以表格中第2行显示的各个值都是null。

3.查询满足年龄age等于18的学生信息
match (s:Student) where s.age=18 return s.id,s.name,s.age,s.sex

怎么样,这条件查询 是不是和MySQL的很相似。当然还有排序、分组、联合、分页等。为了能更好的演示这几种,我们先插入一部分数据,逐条插入:
create (s:Student{id:10001, name:"李四",age:18,sex:1}) return screate (s:Student{id:10002, name:"王五",age:19,sex:1}) return screate (s:Student{id:10003, name:"赵六",age:20,sex:1}) return screate (s:Student{id:10004, name:"周七",age:


1498

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



