跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
SQLjava算法

Neo4j 图数据库使用入门

综述由AI生成Neo4j 图数据库的入门指南。内容包括 Windows 和 Docker 环境下的安装步骤,Cypher 查询语言的基础语法(如创建节点关系、匹配查询、属性操作、排序去重等),常用函数与聚合操作,数据备份与恢复方法,复杂路径查询技巧,以及在 Spring Boot 项目中的集成配置。文章提供了详细的代码示例和配置文件说明,适合初学者快速上手 Neo4j 开发。

清酒独酌发布于 2026/4/5更新于 2026/5/2135 浏览
Neo4j 图数据库使用入门

一、Neo4j 安装

1、Windows 安装

(1)准备环境

最新版需要 JDK 17 环境。

(2)下载

下载地址:https://neo4j.com/deployment-center/ 社区版免费,支持 Windows、Linux、Mac 等操作系统。此处以 Windows 为例。

(3)解压

解压下载的压缩包。

(4)运行

直接执行 . eo4j.bat console,会有命令提示。 访问 http://localhost:7474/。 第一次进入页面,默认用户名密码为 neo4j/neo4j,需设置新密码。

(5)基本使用

登录后可在浏览器界面进行基本操作。

2、Docker 安装

docker pull neo4j:3.5.22-community
docker run -d -p 7474:7474 -p 7687:7687 --name neo4j \
-e "NEO4J_AUTH=neo4j/123456" \
-v /usr/local/soft/neo4j/data:/data \
-v /usr/local/soft/neo4j/logs:/logs \
-v /usr/local/soft/neo4j/conf:/var/lib/neo4j/conf \
-v /usr/local/soft/neo4j/import:/var/lib/neo4j/import \
neo4j:3.5.22-community

二、Cypher 语句

1、Cypher 简介

Cypher 是 Neo4j 的查询语言,用于创建、查询和更新图数据。

2、CREATE 命令,创建节点、关系、属性

-- 创建带有属性的节点
CREATE (zhangsan:Student {id: 1, name: 'zhangsan', age: 13})

-- 创建 Student 和 Teacher 的图
CREATE (stu:Student)
CREATE (tea:Teacher)

3、MATCH 命令,查询

MATCH 需要配合 RETURN 使用。

MATCH (stu:Student)
RETURN stu

不配合 RETURN 或 UPDATE 语句会报错。

4、RETURN 语句

-- 示例
MATCH (s:Student)
RETURN s

-- 或者直接返回属性
MATCH (s:Student)
RETURN s.id, s.name, s.age

5、WHERE 子句

-- 条件查询
MATCH (emp:Employee)
WHERE emp.name = 'Abc' OR emp.name = 'Xyz'
RETURN emp

-- 查询多个,但是没有条件,可以查询后做关系
MATCH (d:Dog), (c:Cat)
WHERE d.name = 'dog1' OR c.name = 'cat1'
RETURN d, c

6、创建关系

-- 创建数据
CREATE (d:Dog {id: 1, name: 'dog1', age: 1})
CREATE (c:Cat {id: 2, name: 'cat1', age: 2})

-- 使用新节点创建关系
CREATE (d:Dog)-[r:Like]->(c:Cat)

-- 已知节点 创建带属性的关系 使用 WHERE
MATCH (d:Dog), (c:Cat)
WHERE d.name = 'dog1' AND c.name = 'cat1'
CREATE (d)-[r:love {info: 'loveit'}]->(c)
RETURN r

-- 检索关系详情
MATCH (d)-[r:love]->(c)
RETURN d, r, c

7、DELETE 删除节点和关系

-- 删除节点,如果有关系需要先删除
MATCH (stu:Student)
DELETE stu

-- 删除关系
MATCH (d)-[r:love]->(c)
DELETE r

8、REMOVE 删除标签和属性

-- 创建多个标签多个属性
CREATE (m:Movie:Pic {id: '1', name: 'test'})

-- 删除标签
MATCH (m:Movie:Pic)
REMOVE m:Pic

-- 删除属性并返回
MATCH (m:Movie:Pic)
REMOVE m.name
RETURN m

9、SET 添加、更新属性

-- 添加属性
MATCH (book:Book)
SET book.title = 'superstar'
RETURN book

10、ORDER BY 排序

-- 默认升序
MATCH (emp:Employee)
RETURN emp.empid, emp.name, emp.salary, emp.deptno
ORDER BY emp.name

11、UNION 合并

UNION 子句将两组结果中的公共行组合并返回到一组结果中,不返回重复行。

-- UNION 合并
MATCH (cc:CreditCard)
RETURN cc.id AS id, cc.number AS number, cc.name AS name, cc.valid_from AS valid_from, cc.valid_to AS valid_to
UNION
MATCH (dc:DebitCard)
RETURN dc.id AS id, dc.number AS number, dc.name AS name, dc.valid_from AS valid_from, dc.valid_to AS valid_to

UNION ALL 结合并返回两个结果集的所有行,包括重复行。

12、LIMIT 和 SKIP 子句

-- 返回前两行
MATCH (emp:Employee)
RETURN emp LIMIT 2

-- 跳过两行
MATCH (emp:Employee)
RETURN emp SKIP 2

-- 实现分页,跳过 1 行然后返回 2 行
MATCH (emp:Employee)
RETURN emp SKIP 1 LIMIT 2

13、MERGE 合并

MERGE 命令是 CREATE 和 MATCH 的组合。如果模式存在则返回,不存在则创建。

-- 语法
MERGE (n:Label {Property1: Value1})

14、NULL 值

-- 过滤 null
MATCH (e:Employee)
WHERE e.id IS NOT NULL
RETURN e.id, e.name, e.sal, e.deptno

MATCH (e:Employee)
WHERE e.id IS NULL
RETURN e.id, e.name, e.sal, e.deptno

15、IN 操作符

-- 示例
MATCH (e:Employee)
WHERE e.id IN [123, 124]
RETURN e.id, e.name, e.sal, e.deptno

16、INDEX 索引

-- 创建索引
CREATE INDEX ON :Customer(name)

-- 删除索引
DROP INDEX ON :Customer(name)

17、UNIQUE 唯一约束

-- 语法
CREATE CONSTRAINT ON (n:Label) ASSERT n.property IS UNIQUE
DROP CONSTRAINT ON (n:Label) ASSERT n.property IS UNIQUE

-- 示例
CREATE CONSTRAINT ON (cc:CreditCard) ASSERT cc.number IS UNIQUE
DROP CONSTRAINT ON (cc:CreditCard) ASSERT cc.number IS UNIQUE

18、DISTINCT 去重

-- 示例
MATCH (n)
RETURN DISTINCT n.name LIMIT 25

三、函数

1、字符串函数

-- 字符串转大写
MATCH (e:Employee)
RETURN e.id, UPPER(e.name), e.sal, e.deptno

-- 字符串转小写
MATCH (e:Employee)
RETURN e.id, LOWER(e.name), e.sal, e.deptno

-- 分隔字符串
MATCH (e:Employee)
RETURN e.id, SUBSTRING(e.name, 0, 2), e.sal, e.deptno

-- 替换字符
MATCH (e:Employee)
RETURN e.id, REPLACE(e.name, 'a', 'z'), e.sal, e.deptno

2、AGGREGATION 聚合

类似于 SQL 中的 GROUP BY 子句。

3、关系函数

获取开始节点、结束节点等关系细节。

四、数据备份与恢复

1、备份

# 备份前需要关闭数据库
./neo4j stop
# 导出到文件
./neo4j-admin dump --database=graph.db --to=/home/2024.dump
# 启动数据库
./neo4j start

2、数据恢复

# 备份前需要关闭数据库
./neo4j stop
# 从文件导入
./neo4j-admin load --from=/home/2024-10-02.dump --database=graph.db --force
# 启动数据库
./neo4j start

五、复杂查询

1、查询指定深度的间接关系

MATCH (p1:Person {name: 'Alice'})-[*..3]-(p2:Person)
WHERE p1 <> p2
RETURN p1, p2

2、查询最短路径的间接关系

MATCH (p1:Person {name: 'Alice'}), (p2:Person {name: 'Bob'})
MATCH path = shortestPath((p1)-[*]-(p2))
RETURN path

3、查询特定关系类型的间接关系

MATCH (p1:Person {name: 'Alice'})-[r:FRIEND_OF*..3]-(p2:Person)
WHERE p1 <> p2
RETURN p1, p2, r

4、限制关系路径中的节点类型

MATCH (p1:Person {name: 'Alice'})-[(*..3)]-(p2:Person)
WHERE p1 <> p2 AND ALL(n IN nodes(path) WHERE n:Person)
RETURN p1, p2

5、使用变量长度路径和过滤条件

MATCH (p1:Person {name: 'Alice'})-[(*..3)]-(p2:Person)
WHERE p1 <> p2 AND ANY(n IN nodes(path) WHERE n.age > 30)
RETURN p1, p2

六、Spring Boot 使用 Neo4j

1、添加依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-neo4j</artifactId>
</dependency>

2、配置文件

# Neo4j 配置
spring.neo4j.uri=bolt://localhost:7687
spring.neo4j.authentication.username=neo4j
spring.neo4j.authentication.password=cxf123!!

附录:neo4j.conf 汉化版

# 自定义数据存储路径
#dbms.active_database=graph.db
#dbms.directories.data=data

# 允许非本地连接
dbms.connectors.default_listen_address=0.0.0.0

# Bolt 连接器
dbms.connector.bolt.enabled=true
dbms.connector.bolt.listen_address=:7687

# HTTP Connector
dbms.connector.http.enabled=true
dbms.connector.http.listen_address=:7474

# JVM 参数
dbms.jvm.additional=-XX:+UseG1GC
dbms.jvm.additional=-XX:-OmitStackTraceInFastThrow
dbms.jvm.additional=-XX:+AlwaysPreTouch
dbms.jvm.additional=-XX:+UnlockExperimentalVMOptions
dbms.jvm.additional=-XX:+TrustFinalNonStaticFields
dbms.jvm.additional=-XX:+DisableExplicitGC
dbms.jvm.additional=-Djdk.tls.ephemeralDHKeySize=2048

目录

  1. 一、Neo4j 安装
  2. 1、Windows 安装
  3. (1)准备环境
  4. (2)下载
  5. (3)解压
  6. (4)运行
  7. (5)基本使用
  8. 2、Docker 安装
  9. 二、Cypher 语句
  10. 1、Cypher 简介
  11. 2、CREATE 命令,创建节点、关系、属性
  12. 3、MATCH 命令,查询
  13. 4、RETURN 语句
  14. 5、WHERE 子句
  15. 6、创建关系
  16. 7、DELETE 删除节点和关系
  17. 8、REMOVE 删除标签和属性
  18. 9、SET 添加、更新属性
  19. 10、ORDER BY 排序
  20. 11、UNION 合并
  21. 12、LIMIT 和 SKIP 子句
  22. 13、MERGE 合并
  23. 14、NULL 值
  24. 15、IN 操作符
  25. 16、INDEX 索引
  26. 17、UNIQUE 唯一约束
  27. 18、DISTINCT 去重
  28. 三、函数
  29. 1、字符串函数
  30. 2、AGGREGATION 聚合
  31. 3、关系函数
  32. 四、数据备份与恢复
  33. 1、备份
  34. 备份前需要关闭数据库
  35. 导出到文件
  36. 启动数据库
  37. 2、数据恢复
  38. 备份前需要关闭数据库
  39. 从文件导入
  40. 启动数据库
  41. 五、复杂查询
  42. 1、查询指定深度的间接关系
  43. 2、查询最短路径的间接关系
  44. 3、查询特定关系类型的间接关系
  45. 4、限制关系路径中的节点类型
  46. 5、使用变量长度路径和过滤条件
  47. 六、Spring Boot 使用 Neo4j
  48. 1、添加依赖
  49. 2、配置文件
  50. Neo4j 配置
  51. 附录:neo4j.conf 汉化版
  52. 自定义数据存储路径
  53. 允许非本地连接
  54. Bolt 连接器
  55. HTTP Connector
  56. JVM 参数
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Flutter for OpenHarmony 实战:通义万相 AIGC 联调与相册持久化
  • 华为 OD 机试 C 卷 - 魔法收积木
  • Hyprland-Material-You 开发者环境搭建全流程
  • Vue3 低代码设计器 EpicDesigner 快速上手指南
  • Ubuntu 系统一键安装 ROS 环境完整流程
  • 云电脑 AIGC 性能对比:ToDesk、顺网云与青椒云实测
  • 华为交换机首次开局配置:Console 连接与 Web 管理设置
  • C++ STL 容器详解:map 与 set 核心用法与底层逻辑
  • OpenClaw + MCP:构建连接任意工具的 AI 助手
  • RTX 4090 本地部署腾讯混元与阿里通义万相视频模型
  • macOS 安装 OpenClaw 实现 Chrome 网站自动化测试
  • C++ 随机生成 RxC 列联表及源码实现
  • CSS 盒模型中 Padding 撑大盒子的解决方法
  • Python 数据分析:学生画像匹配与相似度计算
  • 基于 FPGA 实现 NVMe 硬盘读写功能
  • Stable Diffusion 训练实战:损失函数调优指南
  • JavaScript 混淆代码解密与 de4js 工具使用
  • HarmonyOS 底部导航栏组件 rc_concave_tabbar 使用指南
  • 本地大模型在内网部署 Llama/Qwen 及安全增强实践
  • Llama-3.2-3B 参数详解与 Ollama 部署:3B 小模型高效推理方案

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online