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

Neo4j 图数据库安装与操作指南 (macOS)

Neo4j 是一款高性能图数据库,适用于社交网络分析与知识图谱场景。涵盖 macOS 环境下 Neo4j 的安装(含 JDK 依赖与 Homebrew 方式)、配置环境变量、启动服务以及使用 Cypher 语言进行节点创建、关系建立、属性修改、查询匹配和删除操作的基础教程。

筑梦师发布于 2026/4/10更新于 2026/9/455 浏览
Neo4j 图数据库安装与操作指南 (macOS)

一、安装前提条件

1.1 Java 环境

Neo4j 需要 Java 运行环境来运行,因此首先需要安装 JDK。可以从 Oracle 官网或 OpenJDK 网站下载并安装适合 Mac 的 JDK 版本。假设你选择的是 Neo4j 5.x,应使用 JDK 17 或更高版本;选择的是 Neo4j 4.x,应使用 JDK 11。

1.2 Homebrew(可选)

Homebrew 是 Mac 上的一个包管理器,可以简化安装和管理软件的过程。如果你还没有安装 Homebrew,可以通过在终端中输入以下命令来安装:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

二、下载并安装 Neo4j

2.1 从官方网站下载

访问 Neo4j 的官方网站下载 Graph Database,根据当前配置选择你自己的版本,下载并解压缩。

解压后在该文件夹下即可执行 neo4j 命令。

2.2 使用 Homebrew 安装

打开终端,输入以下命令来安装 Neo4j:

brew install neo4j

安装完成后,Neo4j 的可执行文件通常位于 /usr/local/opt/neo4j/bin 目录下。

三、配置 Neo4j

3.1 设置环境变量 (可选)

如果你打算从命令行启动 Neo4j 服务,你可能需要将其可执行文件的路径添加到你的系统 PATH 环境变量中。通常,Neo4j 的可执行文件位于:

  • Neo4j 桌面端:/Applications/Neo4j Desktop.app/Contents/Resources/app/bin 目录下。
  • 非桌面端:你解压保存的路径 /bin 目录下。

你可以通过以下方式将其添加到 PATH 中(这里以 bash shell 为例):

export PATH="/Applications/Neo4j Desktop.app/Contents/Resources/app/bin:$PATH"

将上述命令添加到你的 ~/.bash_profile 或 ~/.zshrc 文件中(取决于你使用的 shell),然后运行 source ~/.bash_profile 或 source ~/.zshrc 来使其生效。

3.2 打开配置文件 (bash_profile)
3.2.1 打开终端

你可以通过 Spotlight 搜索(按下 Command + 空格,然后输入'Terminal/终端'并回车)来打开终端。

3.2.2 使用 open 命令和默认文本编辑器
open -e ~/.bash_profile

这会使用你的默认文本编辑器(如 TextEdit)打开文件。注意,TextEdit 在打开纯文本文件时可能会以富文本格式显示,这可能会导致格式问题。为了避免这种情况,你可以在 TextEdit 中打开文件后,立即按 Command + Shift + T 切换到纯文本模式。

3.2.3 使用 nano 编辑器
nano ~/.bash_profile

这会打开 ~/.bash_profile 文件,你可以在 nano 编辑器中进行编辑。完成后,按 Control + O 保存文件,然后按 Enter 确认文件名,最后按 Control + X 退出编辑器。

3.2.4 使用图形界面和文本编辑器

导航到你的用户目录,然后启用显示隐藏文件的选项(在 Finder 中按下 Command + Shift + . 可以切换显示/隐藏隐藏文件),最后找到并打开 .bash_profile。选择文本编辑器直接修改保存即可。

四、启动 Neo4j

4.1 neo4j start

如果你使用 Homebrew 安装了 Neo4j,或者已经将 Neo4j 的可执行文件路径添加到 PATH 中,你可以在终端中输入命令 neo4j start 启动 Neo4j:

neo4j start

启动成功后,进程编号会显示,并且可以通过 Neo4j 的 Web 界面 (任意浏览器) 访问 http://localhost:7474,使用默认的用户名 neo4j 和密码 neo4j(首次登录后系统会提示更改密码)。

4.2 绝对路径 start

未添加 PATH,可通过可执行文件的确切位置,你可以使用完整路径来启动它:

/Users/scc/AUserProjects/neo4j-community-4.4.38/bin/neo4j start

五、创建一个简单的图

Neo4j 的 Cypher 查询语言是一套用于构建、查询和操作图数据库的声明式语言。在 Neo4j 中,图是由节点(Node)、关系(Relationship)和属性(Property)组成的。

5.1 创建节点/关系

5.1.1 创建节点并给节点 (n) 分配一个属性 (name)
CREATE (n {name:"曹操"})

这就表示我们创建成功了,在左侧 Node labels 中未发现该节点。我们执行查询节点是能操作到的。

5.1.2 创建节点并分配属性和标签 (Person)
CREATE (p:Person{name:"曹操"})

执行完后,你就可以看到左侧节点列表有数据了。

5.1.3 批量创建节点

UNWIND 是一种操作,用于将列表中的元素解构为多行。它允许按行访问和处理列表中的每个元素,更多地用于数据导入、转换和过滤等场景。

无标签:

UNWIND [{name: '张辽'}, {name: '关羽'}] AS myNodes
CREATE (n) SET n = myNodes

有标签:如果我们只处理统一标签(Person)节点,我们可以这样:

UNWIND [{name: '貂蝉'}, {name: '吕布'}] AS myNode
CREATE (n:Person {name: myNode.name})
5.1.4 创建一个关系

给已经存在的两个节点创建一个关系。

MATCH (a:Person),(b:Person)
WHERE a.name = '吕布' AND b.name = '貂蝉'
CREATE (a)-[r:妻子]->(b)
RETURN r

5.2 修改节点/关系

5.2.1 为节点添加属性
MATCH (n {name:'吕布'})
SET n.age=18
RETURN n
5.2.2 为节点添加标签
MATCH (n{name:'关羽'}) SET n:Person RETURN n

5.3 匹配 (查找) 节点/关系

Cypher 的 MATCH 语句和 SQL 的 SELECT 语句类似,都是查询数据的表达式。而 Cypher 语句中的 WHERE 和 SQL 语句中的 WHERE 语句由这相同的作用,其作用是用来过滤匹配的节点,在 Cypher 语句中 WHERE 是在 MATCH、OPTIONAL MATCH、WITH 或 START 语句中使用的过滤限定语句。

匹配语句结构:

  • [MATCH WHERE]
  • [OPTIONAL MATCH WHERE]
  • [WITH [ORDER BY] [SKIP] [LIMIT]]
  • RETURN [ORDER BY] [SKIP] [LIMIT]
5.3.1 根据属性匹配节点信息
MATCH (n{name:"吕布"}) RETURN n
MATCH (n{age:18}) RETURN n
5.3.2 根据标签和属性匹配节点信息
MATCH (n:Person{name:"吕布"}) RETURN n
5.3.3 匹配任意节点
MATCH (n) RETURN n
5.3.4 匹配任意关系
MATCH p = (n)-[r]->(m) RETURN p
5.3.5 匹配字符串的开头
MATCH (n)
WHERE n.name STARTS WITH '吕'
RETURN n
5.3.6 匹配字符串的末尾
MATCH (n)
WHERE n.name ENDS WITH '布'
RETURN n
5.3.7 匹配字符串的包含匹配
MATCH (n)
WHERE n.name CONTAINS '吕'
RETURN n
5.3.8 字符串排除匹配
MATCH (n)
WHERE NOT n.name STARTS WITH '吕'
RETURN n

其他还有很多,如字符串正则表达式等,就不一一列举了。

5.4 删除节点/关系/表

5.4.1 删除节点属性
MATCH (n{name:'夏侯淳'}) REMOVE n.age RETURN n

MATCH 语句 用于找到满足条件的节点。在这里,它查找所有标签为 Person 且属性 name 值为 '夏侯淳' 的节点。

5.4.2 删除节点标签
MATCH (n{name:'夏侯淳'}) REMOVE n:Person RETURN n
5.4.3 删除节点
MATCH (p:Person {name: '夏侯淳'})
DELETE p

DELETE 语句 用于删除找到的节点。由于 Neo4j 中的关系是基于节点的,因此删除节点也会删除与该节点相连的所有关系。

5.4.4 删除关系

仅删除 a=>b 关系 (所有),保留节点。

MATCH (a)-[r]->(b)
WHERE a.name = '节点 A 的名称' AND b.name = '节点 B 的名称'
DELETE r

MATCH (a)-[r]->(b)
WHERE a.name = '吕布' AND b.name = '貂蝉'
DELETE r
5.4.5 删除关系及节点

删除关系以及至少一端没有其他关系的节点。

MATCH (a)-[r]->(b)
WHERE a.name = '节点 A 的名称' AND b.name = '节点 B 的名称'
DETACH DELETE r
5.4.6 删除节点所有关系

删除节点 a 和 b 以及它们与其他任何节点之间的所有关系。

MATCH (a), (b)
WHERE a.name = '节点 A 的名称' AND b.name = '节点 B 的名称'
DELETE a, b
5.4.7 删除所有节点和关系

如果你想要清空整个图数据库,可以删除所有的带有关系的节点及关系。但请注意,这是一个非常危险的操作,因为它会永久删除所有数据。独立没有关系的节点会被保留下来。

MATCH (n)-[r]-()
DELETE n, r
5.4.8 删除所有节点

如果你想要清空整个图数据库,可以删除所有的节点。但请注意,这是一个非常危险的操作,因为它会永久删除所有数据。

MATCH (n) DELETE n

六、Neo4j 其他命令

查询版本:neo4j --version

服务状态:neo4j status

重启服务:neo4j restart

停止服务:neo4j stop

卸载:brew uninstall neo4j

删除数据和配置文件:rm -rf /usr/local/var/neo4j

目录

  1. 1.1 Java 环境
  2. 1.2 Homebrew(可选)
  3. 2.1 从官方网站下载
  4. 2.2 使用 Homebrew 安装
  5. 3.1 设置环境变量 (可选)
  6. 3.2 打开配置文件 (bash_profile)
  7. 3.2.1 打开终端
  8. 3.2.2 使用 open 命令和默认文本编辑器
  9. 3.2.3 使用 nano 编辑器
  10. 3.2.4 使用图形界面和文本编辑器
  11. 4.1 neo4j start
  12. 4.2 绝对路径 start
  13. 5.1 创建节点/关系
  14. 5.1.1 创建节点并给节点 (n) 分配一个属性 (name)
  15. 5.1.2 创建节点并分配属性和标签 (Person)
  16. 5.1.3 批量创建节点
  17. 5.1.4 创建一个关系
  18. 5.2 修改节点/关系
  19. 5.2.1 为节点添加属性
  20. 5.2.2 为节点添加标签
  21. 5.3 匹配 (查找) 节点/关系
  22. 5.3.1 根据属性匹配节点信息
  23. 5.3.2 根据标签和属性匹配节点信息
  24. 5.3.3 匹配任意节点
  25. 5.3.4 匹配任意关系
  26. 5.3.5 匹配字符串的开头
  27. 5.3.6 匹配字符串的末尾
  28. 5.3.7 匹配字符串的包含匹配
  29. 5.3.8 字符串排除匹配
  30. 5.4 删除节点/关系/表
  31. 5.4.1 删除节点属性
  32. 5.4.2 删除节点标签
  33. 5.4.3 删除节点
  34. 5.4.4 删除关系
  35. 5.4.5 删除关系及节点
  36. 5.4.6 删除节点所有关系
  37. 5.4.7 删除所有节点和关系
  38. 5.4.8 删除所有节点

更多推荐文章

查看全部
  • MySQL 数据类型深度解析:选对类型提升性能
  • 基于 OpenClaw 和飞书搭建本地服务器运维 Agent
  • 前端环境配置指南:nvm、Node.js 与 npm
  • OpenClaw 多智能体路由实战:飞书多机器人配置
  • AI 辅助前端设计:从原型验证到代码生成的全流程
  • VLSI 设计中的斯坦纳树算法演进:从 FLUTE 到现代布线
  • C++ 二叉搜索树详解:概念、实现与应用
  • 前端动画库深度解析:从 CSS 到 Framer Motion 与 GSAP
  • 常见加密算法原理、性能与安全应用对比分析
  • AI 原生架构:鸿蒙 App 的下一代形态
  • 纯 C# 自研轻量 UI 引擎:内核<200KB,支持.NET8 AOT 跨平台
  • .NET 集成 GoView 低代码可视化大屏完整方案
  • Android 编程权威指南:深入理解 Intent 与任务机制(一)
  • Linux 基础命令大全
  • Stable Diffusion aki v4下载
  • Python 实现 MCP 客户端调用高德地图天气查询示例
  • LangChain 实战指南:9 个典型应用场景
  • Python 零基础入门:环境安装与第一个程序
  • 宇树 Unitree 机器人 ROS 2 Humble 环境部署实战 (Go2/B2/H1)
  • OpenClaw 生态主流 AI 模型性能实测:PinchBench 深度解读

相关免费在线工具

  • 加密/解密文本

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

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Keycode 信息

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

  • Escape 与 Native 编解码

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

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • JavaScript / HTML 格式化

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