Neo4j 图数据库安装与操作指南(以mac为例)
目录
一、安装前提条件
1.1 Java环境
1.2 Homebrew(可选)
二、下载并安装Neo4j
2.1 从官方网站下载
2.1.1 访问Neo4j的官方网站
2.1.2 使用Homebrew安装
三、配置Neo4j
3.1 设置环境变量(可选)
3.2 打开配置文件(bash_profile)
3.2.1 打开终端
3.2.2 使用open命令和默认文本编辑器(如TextEdit)
3.2.3 使用nano编辑器
3.2.4 使用图形界面和文本编辑器
四、启动 Neo4j
4.1 neo4j start
4.2 绝对路径 start
五、创建一个简单的图
5.1 创建节点/关系
5.1.1 创建节点并给节点(n)分配一个属性(name)
5.1.2 创建节点并分配属性和标签(Person)
5.1.3 批量创建节点
5.1.4 创建一个关系
5.2 修改节点/关系
5.2.1 为节点添加属性
5.2.2 为节点添加标签
5.3 匹配(查找)节点/关系
5.3.1 根据属性匹配节点信息
5.3.2 根据标签和属性匹配节点信息
5.3.3 匹配任意节点
5.3.4 匹配任意关系
5.3.5 匹配字符串的开头
5.3.6 匹配字符串的末尾
5.3.7 匹配字符串的包含匹配
5.3.8 字符串排除匹配
5.4 删除节点/关系/表
5.4.1 删除节点属性
5.4.2 删除节点标签
5.4.3 删除节点
5.4.4 删除关系
5.4.5 删除关系及节点
5.4.6 删除节点所有关系
5.4.7 删除所有节点和关系
5.4.7 删除所有节点
六、Neo4j其他命令
相关推荐
Neo4j 是一种高性能的图数据库,用于存储和查询图形数据。它适合于社交网络分析、推荐系统、知识图谱等场景。
一、安装前提条件
1.1 Java环境
Neo4j需要Java运行环境来运行,因此首先需要安装JDK。可以从Oracle官网或OpenJDK网站下载并安装适合Mac的JDK版本。假设你选择的是 Neo4j 5.25.1 ,应使用JDK 17或更高版本,选择的是 Neo4j 4.4.39,应使用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 从官方网站下载
2.1.1 访问Neo4j的官方网站
访问Neo4j的官方网站(最新版本):Neo4j Download,这里下载到的是桌面版,版本一般都是最新的,作者选择的是下面的方式,而不是使用桌面端。

访问Neo4j的官网下载 Graph Database,选择 Graph Database 后,向下滑动,根据当前配置选择你自己的版本,如下图:

因需要执行的 python 文件应用了一个函数,5.x 不支持,这里选择了更为合适的4.4.39,下载并解压缩。
然后你在该文件夹下就可以执行 neo4j 命令了。
2.1.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命令和默认文本编辑器(如TextEdit)
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.save。选择文本编辑器直接修改保存即可。建议在完成操作后立即再次按下Command + Shift + .来隐藏这些文件(要不太乱了,看着也不舒服)。

四、启动 Neo4j
4.1 neo4j start
如果你使用Homebrew安装了Neo4j,或者已经将Neo4j的可执行文件路径添加到PATH中,你可以在终端中输入命令 neo4j start 启动 Neo4j:
MacBook-Pro:~ scc$ neo4j start
Directories in use:
home: /Users/scc/AUserProjects/neo4j-community-4.4.38
config: /Users/scc/AUserProjects/neo4j-community-4.4.38/conf
logs: /Users/scc/AUserProjects/neo4j-community-4.4.38/logs
plugins: /Users/scc/AUserProjects/neo4j-community-4.4.38/plugins
import: /Users/scc/AUserProjects/neo4j-community-4.4.38/import
data: /Users/scc/AUserProjects/neo4j-community-4.4.38/data
certificates: /Users/scc/AUserProjects/neo4j-community-4.4.38/certificates
licenses: /Users/scc/AUserProjects/neo4j-community-4.4.38/licenses
run: /Users/scc/AUserProjects/neo4j-community-4.4.38/run
Starting Neo4j.
Started neo4j (pid:14617). It is available at http://localhost:7474
There may be a short delay until the server is ready.
4.2 绝对路径 start
未添加PATH,可通过可执行文件的确切位置,你可以使用完整路径来启动它:
MacBook-Pro:~ scc$ /Users/scc/AUserProjects/neo4j-community-4.4.38/bin/neo4j start
Directories in use:
home: /Users/scc/AUserProjects/neo4j-community-4.4.38
xxxxxx
run: /Users/scc/AUserProjects/neo4j-community-4.4.38/run
Starting Neo4j.
Started neo4j (pid:14649). It is available at http://localhost:7474
There may be a short delay until the server is ready.
如上命令就是启动成功 进程编号都告诉你了,并且可以通过Neo4j的Web界面(任意浏览器)访问http://localhost:7474,使用默认的用户名neo4j和密码neo4j(首次登录后系统会提示更改密码)。

五、创建一个简单的图
Neo4j的Cypher查询语言是一套用于构建、查询和操作图数据库的声明式语言。
在 Neo4j 中,图是由节点(Node)、关系(Relationship)和属性(Property)组成的。我们可以创建一个简单的图来练习 Cypher 查询。

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 WITH '吕'
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 rMATCH (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.7 删除所有节点
如果你想要清空整个图数据库,可以删除所有的节点。但请注意,这是一个非常危险的操作,因为它会永久删除所有数据。
MATCH (n) DELETE n
六、Neo4j其他命令
查询版本:neo4j --version
服务状态:neo4j status
重启服务:neo4j restart
停止服务:neo4j stop
卸载:brew uninstall neo4j
删除数据和配置文件:rm -rf /usr/local/var/neo4j
相关推荐
Neo4j之Cypher学习总结Cypher 语句 Cypher是图形数据库Neo4j的声明式查询语言。 Cypher语句规则和具备的能力: Cypher通过模式匹配图数据库中的节点和关系,来提取信息或者修改数据。 Cypher语句中允许使用变量,用来表示命名、绑定元素和参数。 Cypher语句可以对节点、关系、标签和属性进行创建
https://www.cnblogs.com/zhaohuanhuan/p/10637640.html应对 Google Play 政策违规:开发者账号被终止解除指南-CSDN博客文章浏览阅读892次,点赞59次,收藏43次。由于开发人员的疏忽,移除了读写权限的动态申请,使得应用的出现违规操作,接收到违规通知,从而导致开发者账号被终止。https://shuaici.blog.csdn.net/article/details/144084773
相关文章:
Neo4j 图数据库安装与操作指南(以mac为例)
目录 一、安装前提条件 1.1 Java环境 1.2 Homebrew(可选) 二、下载并安装Neo4j 2.1 从官方网站下载 2.1.1 访问Neo4j的官方网站 2.1.2 使用Homebrew安装 三、配置Neo4j 3.1 设置环境变量(可选) 3.2 打开配置文件(bash_profile) 3.2.1 打开终端…...
2024年12月个人工作生活总结
本文为 2024年12月工作生活总结。 研发编码 Golang语言byte数组赋值 假定有如下变量: var strCode string var bCode [9]byte现需将string类型转换成byte类型,如下: bCode []byte(strCode)无法转换,提示: cannot…...
PHP:IntelliJ IDEA 配置 PHP 开发环境及导入PHP项目
在创建PHP项目之前我们需要安装PHP插件,安装步骤如下:Windows:IntelliJ IDEA Ultimate 安装 PHP 插件-CSDN博客 1、导入已有PHP项目,导入之后选择,File > Setting 选择对应CLL Interpreter,如果没有操作…...
【嵌入式C语言】指针数组结构体
指针与数组 指针与数组指针数组数组指针 多维数组数组名的保存 结构体定义结构体定义结构体变量使用typedef简化结构体声明访问结构体成员结构体内存分配字节对齐位域定义位域位域的限制示例 指针与数组 指针数组和数组指针是两个不同的概念,它们涉及到指针和数组的…...
国产数据库TiDB从入门到放弃教程
国家层面战略,安全的角度,硬件、软件国产化是趋势,鸿蒙电脑操作系统、鸿蒙手机操作系统…数据库也会慢慢国产化,国产数据库TiDB用起来比OceanBase丝滑,本身没有那么重。 从入门到放弃 1. 介绍1.1 TiDB 的主要特点1.2 T…...
深入解析 Spring 属性:spring.codec.max-in-memory-size
在现代 Web 应用开发中,数据传输的大小和效率直接影响到系统的性能和稳定性。Spring WebFlux 作为一种响应式编程框架,提供了强大的数据流处理能力。在使用 WebFlux 时,spring.codec.max-in-memory-size 是一个关键配置,用于定义应…...
在K8S中,如何查看Pod状态的详情?事件显示cpu不足如何处理?
在Kubernetes中,查看Pod状态的详细通常设计使用kubectl命令行工具,这是kubernetes提供的一个强大的管理工具。以下是如何查看Pod状态详情的步骤: 1. 查看Pod状态详情 列出所有Pod: 使用kubectl get pods命令可以查看集群所有Po…...
ArcGIS教程(009):ArcGIS制作校园3D展示图
文章目录 数据下载校园3D展示图制作创建要素类矢量化【楼】要素矢量化【绿地】矢量化【范围】矢量化处理打开ArcScene添加动画数据下载 https://download.csdn.net/download/WwLK123/90189025校园3D展示图制作 创建要素类 添加底图: 新建【文件地理数据库】,并修改名称为【…...
REDIS2.0
string list hash set 无序集合 声明一个key,键里面的值是元素,元素的类型是string 元素的值是唯一的,不能重复 多个集合类型之间可以进行并集,交集,集查的运算 sadd test1 a b c c d :添加5个元素&am…...
算法练习——模拟题
前言:模拟题的特点在于没有什么固定的技巧,完全考验自己的代码能力,因此有助于提升自己的代码水平。如果说一定有什么技巧的话,那就是有的模拟题能够通过找规律来简化算法。 一:替换所有问号 题目要求: 解…...
京东供应链创新与实践:应用数据驱动的库存选品和调拨算法提升履约效率
2024 年度总结系列 2024 年 10 月,京东零售供应链技术团队凭借其在库存选品与调拨技术上的创新与实践,荣获运筹与管理学领域的国际顶级奖项 Daniel H. Wagner Prize。本文为您介绍获奖背后的供应链技术创新和落地应用。 00 摘要 在电商行业中&#x…...
pytorch张量的fill_方法介绍
在 PyTorch 中,fill_ 是一个张量的原地操作方法,用于将张量中的所有元素填充为指定的值。 方法签名 Tensor.fill_(value)参数 value (float or int): 要填充到张量中的值。 返回值 返回调用该方法的张量本身,且是经过修改后的张量。 特…...
WAP短信格式解析及在Linux下用C语言实现
WAP短信格式解析及在Linux下用C语言实现 一、引言二、WAP短信格式概述三、WAP短信头的内容四、UDHI与WAP短信体的关系五、在Linux下用C语言解析WAP短信头及短信体内容一、引言 在移动通信领域,短信作为一种古老却稳定的通信方式,一直扮演着重要的角色。随着技术的发展,短信…...
Linux的诞生与发展、体系结构与发行版本
Linux作为一个开源操作系统,在过去几十年中一直扮演着至关重要的角色。它不仅深刻影响了服务器、桌面和移动设备,还成为了开源运动的重要组成部分。本文将介绍Linux的历史、体系结构、以及主要的发行版,帮助你更好地了解Linux的方方面面。 一…...
为什么Mysql用B+树作为索引
首先,能作为索引的数据结构有很多,例如数组、链表、二叉树 数据和索引都是存储在磁盘里的。 我们通过索引来查询数据时,先从磁盘读取索引到内存,再通过索引从磁盘中找到某行数据,然后读入到内存。 要设计一个适合 MySQ…...
探索 DC-SDK:强大的 3D 地图开发框架
在现代 Web 开发中,地理信息系统(GIS)和 3D 地图可视化变得越来越重要。dc-sdk 是一个基于 Cesium 的开源 WebGL 地图开发框架,它提供了丰富的地图可视化功能和简单易用的 API,使开发者能够轻松地在 Web 应用中集成 3D…...
C#高级篇 反射和属性详解【代码之美系列】
🎀🎀🎀代码之美系列目录🎀🎀🎀 一、C# 命名规则规范 二、C# 代码约定规范 三、C# 参数类型约束 四、浅析 B/S 应用程序体系结构原则 五、浅析 C# Async 和 Await 六、浅析 ASP.NET Core SignalR 双工通信 …...
算法 class 005 (对数器C语言实现)
对数器的概念: 用来测试你的算法是否正确。 怎么做呢? 1:比如,写个冒泡排序,作为对比的对象 2:生成一个随机数 数组,用来测试 3:用冒泡排序和你想要验证的那个排序算法,同…...
windows系统安装完Anaconda之后怎么激活自己的虚拟环境并打开jupyter
1.在win主菜单中找到Anaconda安装文件夹并打开终端 文件夹内有所有安装后的Anaconda的应用软件和终端窗口启动窗口 点击Anaconda Prompt(Anaconda)就会打开类似cmd的命令终端窗口,默认打开的路径是用户名下的路径 2.激活虚拟环境 使用命令…...
leetcode 面试经典 150 题:矩阵置零
链接矩阵置零题序号73题型二维数组解题方法标记数组法难度中等熟练度✅✅✅✅ 题目 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1: 输入:matrix [[1,1,1],[1,0,1]…...
终极热键冲突检测指南:3分钟定位Windows快捷键失效元凶
终极热键冲突检测指南:3分钟定位Windows快捷键失效元凶 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 你是否曾…...
终极RVM Gemset完全指南:如何优雅隔离Ruby项目依赖
终极RVM Gemset完全指南:如何优雅隔离Ruby项目依赖 【免费下载链接】rvm Ruby enVironment Manager (RVM) 项目地址: https://gitcode.com/gh_mirrors/rv/rvm Ruby开发中,项目依赖冲突是开发者最头疼的问题之一。Ruby enVironment Manager (RVM) …...
BigDL-2.x与Spark MLlib集成:传统机器学习与深度学习的完美融合
BigDL-2.x与Spark MLlib集成:传统机器学习与深度学习的完美融合 【免费下载链接】BigDL-2.x BigDL: Distributed TensorFlow, Keras and PyTorch on Apache Spark/Flink & Ray 项目地址: https://gitcode.com/gh_mirrors/bi/BigDL-2.x BigDL-2.x是一个强…...
Fooocus:让AI图像创作触手可及的革新工具
Fooocus:让AI图像创作触手可及的革新工具 【免费下载链接】Fooocus Focus on prompting and generating 项目地址: https://gitcode.com/GitHub_Trending/fo/Fooocus 价值定位:AI绘画的民主化革命 🚀 在数字创作领域,专业…...
救命!这些毕设太好抄了,3000+毕设案例推荐第1027期
271、基于Java的建材租赁智慧管理系统的设计与实现(论文+代码+PPT)建材租赁智慧管理系统主要功能包括:会员操作、客户资料、建材管理、计量单位、建材损坏收费标准、租赁合同、租费标准、租出登记、归还登记、丢赔管理、入库登记、租金计算、…...
C++ 多线程同步机制详解
C多线程同步机制详解 在现代计算机系统中,多线程编程已成为提升程序性能的重要手段。多线程环境下的资源共享与竞争问题也随之而来,稍有不慎便会导致数据不一致、死锁等问题。C提供了丰富的多线程同步机制,帮助开发者高效管理线程间的协作与…...
GModPatchTool:一站式Garry‘s Mod游戏问题解决方案与优化工具
GModPatchTool:一站式Garrys Mod游戏问题解决方案与优化工具 【免费下载链接】GModPatchTool 🇬🩹🛠 Patches for Garrys Mod. Updates/Improves CEF and Fixes common launch/performance issues (esp. on Linux/Proton/macOS). …...
AI建站工具避坑指南:10个高频问题与真相解答
面对AI建站这个新事物,心动的人多,但真正敢下手的人,心里都藏着不少问号。“这东西靠谱吗?”“我的数据会不会丢了?”“用这个做了网站,以后会不会被圈住?”这些顾虑非常正常。今天这篇文章&…...
发票识别小助手:用OCR文字识别镜像自动读取发票信息
发票识别小助手:用OCR文字识别镜像自动读取发票信息 1. 项目背景与价值 在日常财务工作中,发票信息录入是一项耗时且容易出错的任务。传统的人工录入方式不仅效率低下,还容易因疲劳导致数据错误。OCR(光学字符识别)技…...
一键隐藏桌面图标任务栏的实用工具
软件介绍 AutoDesktop是一个专门管理桌面图标显示与隐藏的小工具。它的作用很简单:一键把桌面上乱七八糟的图标和底部的任务栏全都藏起来,还你一个干干净净的桌面。 体积小巧运行轻量 整个软件才40K大小,真的非常小。双击运行后会自动关闭…...
