Neo4j 新手教程 环境安装 基础增删改查 python链接 常用操作 纯新手向

Neo4j安装教程🚀

目前在学习知识图谱的相关内容,在图数据库中最有名的就是Neo4j,为了降低入门难度,不被网上很多华丽呼哨的Cypher命令吓退,故分享出该文档,为自己手动总结,包括安装环境,增删改查,和使用python操作等,纯干货,36张图,多图少字是咱信条。


文章目录

  • Neo4j安装教程🚀
    • [1. 安装JAVA环境(前置)](#1. 安装JAVA环境(前置))
    • [2. 安装Neo4j](#2. 安装Neo4j)
    • [3. Neo4j数据库的基础操作](#3. Neo4j数据库的基础操作)
      • [3.1 增加节点](#3.1 增加节点)
      • [3.2 增加关系](#3.2 增加关系)
      • [3.3 删除节点](#3.3 删除节点)
      • [3.4 删除关系](#3.4 删除关系)
      • [3.5 增加或修改节点的属性](#3.5 增加或修改节点的属性)
      • [3.6 删除节点的属性信息](#3.6 删除节点的属性信息)
      • [3.7 增加或修改关系的属性](#3.7 增加或修改关系的属性)
      • [3.8 删除关系的属性](#3.8 删除关系的属性)
      • [3.9 查询节点](#3.9 查询节点)
      • [3.10 查询关系](#3.10 查询关系)
      • [3.11 查询三元组](#3.11 查询三元组)
    • [4.Python 链接 Neo4j](#4.Python 链接 Neo4j)
    • 几个常用命令
  • 结束

1. 安装JAVA环境(前置)

官方网址:JDK安装

下载之后可以记一下安装路径,可能以后会用到

在命令提示窗口,输入java -version,查看一下安装之后环境变量是否安装成功,否则需要手动设置环境变量

2. 安装Neo4j

在该网址下,下划寻找安装,安装社区版

官方网址:Neo4j

解压到本地,其包含的文件如下。

将其bin文件路径配置到环境变量下,本文示例路径如下。

C:\Users\Administrator\Desktop\neo4j-community-5.17.0-windows\neo4j-community-5.17.0\bin

之后在命令控制台输入,如果打印出数据库信息则代表安装成功

neo4j.bat console

然后在浏览器输入,进入如下页面

cmd 复制代码
localhost:7474

第一次登陆的话,初始账号密码都是neo4j,第2行的Database 空着就行

然后会进入提示修改页码的界面

修改成功之后跳转到如下界面。

3. Neo4j数据库的基础操作

3.1 增加节点

在图书库中增主要分位两部分,增加节点和增加关系,首先增加节点,下面给出一个增加节点的基础示例person是这个节点的变量名称,Person为该点所属的类别,是可选的,{name: 'John', age:30}是属性,可以理解成pyhon中的一个键值对的形式,这个没有长度限制可以一直延申。

c 复制代码
CREATE (person:Person {name: 'John', age:30})

在顶部的命令提示栏部分输入,上述代码,点右侧的蓝色小三角运行,或者ctrl+enter

运行结果如下,这里没有爆红就是没报错,然后接下来去查看一下生成的节点。

点击左侧上方的菜单栏图标。

然后点这个Person类别标签

就可以看到如下的一个节点

鼠标放到节点上,即可在右侧看到该节点对应的属性

3.2 增加关系

然后是增加一个关系,增加关系之前需要再则更加一个节点

c 复制代码
CREATE (n:Person {name: 'Hao', age:20})

对已经创建的两个节点之间,建立一个联系。

首先查找这两个节点,首先查找一个类别为Person,name为John的节点,命名为a.
然后查找一个类别为Person,name为Hao的节点命名为b
最后用(a)-[:FRIENDS_WITH]->(b)语法建立关系FRIENDS_WITH为关系。

c 复制代码
MATCH (a:Person {name: 'John'}), (b:Person {name: 'Hao'})
CREATE (a)-[:FRIENDS_WITH]->(b)

新创建两个节点同时在两个节点之间建立一个关联,并给关系附上一个属性。这也是一个标准的三元组方式

c 复制代码
CREATE (c:Person {name: 'Ying', age:20})-[:TEACHER_WITH{subject:'math'}]->(d:Person {name: 'Chen', age:20})

3.3 删除节点

首先先创建一个独立节点。

c 复制代码
CREATE (n:Person{name:'me'})

然后是图数据库删除一个节点的操作步骤,查找并删除他,运行删除命令之后节点数量变为4.试图中也发现该节点被删除,需要补充的是图数据库不允许直接删除有关系的节点,如果执行了会报错

c 复制代码
MATCH (n:Person{name:"ME"}) DELETE n

3.4 删除关系

删除关系不是删除节点,同理也要先搜索这段关系,然后给他一个变量名,然后删除,执行了之后删除了一个关系,关系变为1

c 复制代码
MATCH (c:Person {name: 'Ying', age:20})-[r:TEACHER_WITH{subject:'math'}]->(d:Person {name: 'Chen', age:20})
DELETE r                                                                                      

3.5 增加或修改节点的属性

例子为修改name属性为ChenPerson节点的age属性从20改到25,先搜索该节点,然后修改它的属性,如果没有该属性则会创建一个新属性然后赋值

c 复制代码
MATCH (p:Person {name: 'Chen'})
SET p.age = 25

修改前属性

运行代码

修改后的结果

3.6 删除节点的属性信息

删除的命令为REMOVE,下文中删除Chen的年龄属性。

运行命令效果。

c 复制代码
MATCH (p:Person {name: 'Chen'})
REMOVE p.age

查看节点的属性信息。

3.7 增加或修改关系的属性

这里我们首先查找(匹配)John和Hao的朋友关系,然后给这段朋友关系添加一个属性。

c 复制代码
MATCH (n:Person {name:'John'})-[r:FRIENDS_WITH]->(m:Person {name:'Hao'})
SET r.years = 10
    

查看该关系的属性信息。

3.8 删除关系的属性

c 复制代码
MATCH (n:Person {name:'John'})-[r:FRIENDS_WITH]->(m:Person {name:'Hao'})
REMOVE r.years

3.9 查询节点

查询一个节点

c 复制代码
MATCH (n:Person{name:"Chen"}) RETURN n

3.10 查询关系

如果只查询一个关系,则不会返回视图,只会返回属性表格。

c 复制代码
MATCH (n:Person {name:'John'})-[r:FRIENDS_WITH]->(m:Person {name:'Hao'})
RETURN r

3.11 查询三元组

c 复制代码
MATCH (n:Person {name:'John'})-[r:FRIENDS_WITH]->(m:Person {name:'Hao'})
RETURN n,r,m

查询关系时候只有同时查询关系的两个节点,表示关系的线才会在视图部分显示

在查询的时候也可以用过WHERE等命令进一步限定筛选条件

4.Python 链接 Neo4j

安装py2neo库

cmd 复制代码
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple py2neo

链接代码

python 复制代码
from py2neo import Graph

# 连接到Neo4j数据库
graph = Graph("bolt:\\localhost:7687", auth=("neo4j", "passworld"))

propertys = 'Person'
# 增加一个节点
order = f"CREATE (n:{propertys} {{name: 'Father', age:30}})"
# 删除一个节点
# order = "MATCH (n:Person{name:'Father'}) DELETE n"
# 增加一个关系
# order = "MATCH (a:Person {name: 'John'}), (b:Person {name: 'Hao'}),CREATE (a)-[:FRIENDS_WITH]->(b)"
graph.run(order)

# 返回所有节点
nodes = graph.run("MATCH (n) RETURN n")


# 遍历和打印结果
for node in nodes:
    print(node)

几个常用命令

删库跑路,慎用

c 复制代码
MATCH (r)
DETACH DELETE r

查询数量

c 复制代码
MATCH (n:`Person`)
RETURN count(n) AS Numbers

查找一个节点的所有的关系

c 复制代码
MATCH (n)-[r]->(m)
WHERE n.name = "name"
RETURN n, r, m

结束

这是一个简单的入门部分,包括最基础的增删改查工作,反正我网上是没看到觉得比较舒服的,花里胡哨的比较多,写出来分享给大家,如果你看到最后了,那你一定是一个热爱学习的亲,如果有什么不完善的地方,非常欢迎留言交流。

相关推荐
无尽的大道几秒前
Java字符串深度解析:String的实现、常量池与性能优化
java·开发语言·性能优化
爱吃生蚝的于勒4 分钟前
深入学习指针(5)!!!!!!!!!!!!!!!
c语言·开发语言·数据结构·学习·计算机网络·算法
binishuaio13 分钟前
Java 第11天 (git版本控制器基础用法)
java·开发语言·git
zz.YE15 分钟前
【Java SE】StringBuffer
java·开发语言
就是有点傻19 分钟前
WPF中的依赖属性
开发语言·wpf
洋24028 分钟前
C语言常用标准库函数
c语言·开发语言
进击的六角龙29 分钟前
Python中处理Excel的基本概念(如工作簿、工作表等)
开发语言·python·excel
wrx繁星点点30 分钟前
状态模式(State Pattern)详解
java·开发语言·ui·设计模式·状态模式
NoneCoder1 小时前
Java企业级开发系列(1)
java·开发语言·spring·团队开发·开发
苏三有春1 小时前
PyQt5实战——UTF-8编码器功能的实现(六)
开发语言·qt