- 参考视频:
【IT老齐589】快速上手Neo4j网状关系图库
1 Neo4j简介
-
Neo4j是一个图数据库,是知识图谱的基础
-
在Neo4j中,数据的基本构建块包括:
- 节点(Nodes)
- 关系(Relationships)
- 属性(Properties)
- 标签(Labels)
1.1 节点(Nodes)
- 节点代表现实世界中的实体
1.2 关系(Relationships)
- 关系连接两个节点
- 每个关系都有一个方向(从一个节点指向另一个节点),并且可以有属性。
1.3 属性(Properties)
- 属性是键值对的形式附加到节点或关系上的额外信息。
- 例如,一个“Person”节点可能有一个名为“name”的属性,其值为“John Doe”。
1.4 标签(Labels)
- 标签用来分类节点,类似于类目或类型。
- 例如,可以给所有表示人的节点添加“Person”的标签
2 Cypher查询语言
2.1 基本概念
- MATCH语句用于查找特定的图模式(即节点和关系的模式)。
- CREATE语句用于创建新的节点和关系。
- RETURN语句用于返回查询结果。
- WHERE子句用于过滤结果集。
- SET语句用于修改节点或关系的属性。
- DELETE语句用于删除节点或关系。
- WITH子句用于在查询的不同部分之间传递结果集。
2.2 Docker快速部署
docker run \--publish=7474:7474 \--publish=7687:7687 \--env NEO4J_AUTH=neo4j/12345678 \-d \--name=test \neo4j:5.22.0-community
逐项说明:
-
docker run
:
一条docker run
命令完成拉取镜像、创建和启动容器的全部工作,无需提前手动docker pull
或docker create
-
--publish=7474:7474
与--publish=7687:7687
:
将主机的 7474 端口映射到容器内部的 7474 端口,将主机的 7687 端口映射到容器内部的 7687 端口
对于 Neo4j 来说,7474 通常是 HTTP 接口,7687 通常是 Bolt 协议接口
Bolt 是 Neo4j 数据库专门设计的二进制协议,用于客户端与服务器之间的通信 -
--env NEO4J_AUTH=neo4j/12345678
:
设置环境变量NEO4J_AUTH
为neo4j/12345678
。这通常用于初始化 Neo4j 时指定默认用户名和密码(neo4j
用户名和12345678
密码)。 -
-d
:以守护态方式(后台方式)运行容器。 -
neo4j:5.22.0-community
:
使用neo4j:5.22.0-community
这个镜像来创建容器。若本地无此镜像,docker run
会自动拉取。
2.3 电影图数据库指南
2.3.1 创造 Create
1.CREATE 语句
# 1.CREATE 语句:
# 创建带有指定标签和属性的节点
CREATE (n:Label {属性键:属性值, ...})# CREATE子句允许创建一个或多个节点。
# 每个节点都可以分配标签和属性,多个标签用冒号分隔
CREATE (乔布斯:人类:创始人 {姓名: '乔布斯', 出生年份: 1955, 逝世年份: 2011}), (比尔盖茨:人类:创始人 {姓名: '比尔盖茨', 出生年份: 1955})# 2.关系(关系类型和属性)
# 使用 (节点1)-[:关系类型 {属性}]->(节点2) 来创建连接两个节点的有向关系。例如:
MATCH (a:人类 {姓名: "乔布斯"}), (b:人类 {姓名: "比尔盖茨"})
CREATE (a)-[:竞争对手 {行业: "计算机"}]->(b)
# 表示首先查找两个节点,然后创建一个从乔布斯到比尔盖茨的竞争对手关系,该关系有一个名为行业的属性# 清空neo4j里的所有数据
MATCH (n) DETACH DELETE n
2.3.2 查询 Match
-- 查询Match
-- 语法是n是一个变量,:Label是一个标签,{属性键:属性值}是一个属性
MATCH (n:Label {属性键:属性值, ...})
RETURN n-- 查询条件 WHERE(可选):
-- 结果返回 RETURN
MATCH (节点)-[关系]->(其他节点)
WHERE 条件
RETURN 查询结果