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

Neo4j安装教程🚀

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


文章目录

  • Neo4j安装教程🚀
    • 1. 安装JAVA环境(前置)
    • 2. 安装Neo4j
    • 3. Neo4j数据库的基础操作
      • 3.1 增加节点
      • 3.2 增加关系
      • 3.3 删除节点
      • 3.4 删除关系
      • 3.5 增加或修改节点的属性
      • 3.6 删除节点的属性信息
      • 3.7 增加或修改关系的属性
      • 3.8 删除关系的属性
      • 3.9 查询节点
      • 3.10 查询关系
      • 3.11 查询三元组
    • 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

在这里插入图片描述

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

localhost:7474

在这里插入图片描述

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

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

在这里插入图片描述

修改成功之后跳转到如下界面。
在这里插入图片描述

3. Neo4j数据库的基础操作

3.1 增加节点

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

CREATE (person:Person {name: 'John', age:30})

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

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

在这里插入图片描述
点击左侧上方的菜单栏图标。

在这里插入图片描述

然后点这个Person类别标签

在这里插入图片描述
就可以看到如下的一个节点

在这里插入图片描述

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

在这里插入图片描述

3.2 增加关系

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

CREATE (n:Person {name: 'Hao', age:20})

在这里插入图片描述

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

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

在这里插入图片描述

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

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

在这里插入图片描述

3.3 删除节点

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

CREATE (n:Person{name:'me'})

在这里插入图片描述

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

MATCH (n:Person{name:"ME"}) DELETE n

在这里插入图片描述

在这里插入图片描述

3.4 删除关系

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

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,先搜索该节点,然后修改它的属性,如果没有该属性则会创建一个新属性然后赋值

MATCH (p:Person {name: 'Chen'})
SET p.age = 25

修改前属性
在这里插入图片描述

运行代码
在这里插入图片描述

修改后的结果
在这里插入图片描述

3.6 删除节点的属性信息

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

MATCH (p:Person {name: 'Chen'})
REMOVE p.age

在这里插入图片描述

查看节点的属性信息。

在这里插入图片描述

3.7 增加或修改关系的属性

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

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

在这里插入图片描述

查看该关系的属性信息。

在这里插入图片描述

3.8 删除关系的属性

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

在这里插入图片描述

在这里插入图片描述

3.9 查询节点

查询一个节点

MATCH (n:Person{name:"Chen"}) RETURN n

在这里插入图片描述

3.10 查询关系

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

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

在这里插入图片描述

3.11 查询三元组

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

在这里插入图片描述

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

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

4.Python 链接 Neo4j

安装py2neo库

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple py2neo

链接代码

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)

几个常用命令

删库跑路,慎用

MATCH (r)
DETACH DELETE r

查询某一类样本的数量

MATCH (n:`Person`)
RETURN count(n) AS Numbers

查找一个节点的所有相关节点,用节点的name查询

MATCH (n)-[r]->(m)
WHERE n.name = "name" or  m.name = "name"
RETURN n, r, m

结束

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/272099.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

server win搭建apache网站服务器+php网站+MY SQL数据库调用电子阅览室

一、适用场景: 1、使用开源的免费数据库Mysql; 2、自己建网站的发布; 3、使用php代码建网站; 4、使用windows server作为服务器; 5、使用apache作为网站服务器。 二、win server 中apache网站服务器搭建 &#xff0…

集群下锁失效的问题(JAVA)

一,出现问题的原因 因此每一个锁对象,都会指向一个锁监视器,而每一个锁监视器,同一时刻只能被一个线程持有,这样就实现了互斥效果。但前提是,多个线程使用的是同一把锁。 但问题来了,我们的服务…

C语言之练手题

题目1: 思路:我们定义两个变量left和right分别为数组的左端下标和右端下标。 左端下标的元素为奇数时,left继续往前走,为偶数时就停下 右端下标的元素为偶数时,right- -往回走,为奇数时停下 停下后对应的元…

ubuntu18.04编译OpenCV-3.4.19+OpenCV_contrib-3.4.19

首先确保安装了cmake工具 安装opencv依赖文件 sudo apt-get install build-essential sudo apt-get install git libgtk-3-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev sudo apt-get install python3-dev python3-numpy libtbb2 libtbb-dev libjpeg-dev li…

Linux操作系统的vim常用命令和vim 键盘图

在vi编辑器的命令模式下,命令的组成格式是:nnc。其中,字符c是命令,nn是整数值,它表示该命令将重复执行nn次,如果不给出重复次数的nn值,则命令将只执行一次。例如,在命令模式下按j键表…

03:HAL---中断

目录 一:中断 1:简历 2:AFIO 3:EXTI 4:NVIC基本结构 5:使用步骤 6:设计中断函数 二:中断的应用 A:对外式红外传感计数器 1:硬件介绍 2:计数代码 B:旋转编码计数器 1:硬件介绍 2:旋转编码器代码 C:按键控制LED D:代码总结 一:中断 1:简历 中断:在主程序…

基于SpringBoot+Vue+ElementUI+Mybatis前后端分离管理系统超详细教程(五)——多条件搜索并分页展示

前后端数据交互 书接上文,我们上节课通过前后端数据交互实现了分页查询和单条件搜索分页查询的功能,最后留了个小尾巴,就是把其他两个搜索条件(email,address)也加进来,实现多条件搜索并分页展示。这节课我…

ThreadLocal 内存泄漏问题

ThreadLocal 用于存储线程本地的变量,如果创建了一个 ThtreadLocal 变量,在多线程访问这个变量的时候,每个线程都会在自己线程的本地内存中创建一份变量的副本,从而起到线程隔离的作用。 Thread、ThreadLocal、ThreadLocalMap 之…

RabbitMQ架构详解

文章目录 概述架构详解核心组件虚拟主机(Virtual Host)RabbitMQ 有几种广播类型 概述 RabbitMQ是⼀个高可用的消息中间件,支持多种协议和集群扩展。并且支持消息持久化和镜像队列,适用于对消息可靠性较高的场合 官网https://www.…

ShardingSphere-SQL 解析 Issue 处理流程

ShardingSphere-SQL 解析 Issue 处理流程 这是之前给社区写的 SQL 解析 Issue 的处理流程,可以帮助社区用户快速参与到 ShardingSphere-SQL 解析任务当中。 ShardingSphere SQL 解析 issue 列表 Issue 背景说明 当前 Issue 使用自定义的爬虫脚本从对应的数据库官…

数据中台驱动:高效交付之道

如何保证数据中台高效交付? 在数据行业中,项目交付难题尤为突出,尤其在数据中台领域。数据中台项目交付面临诸多挑战,若不妥善解决,将会降低服务质量,影响企业数字化建设的顺利开展,甚至影响项目…

智能合约语言(eDSL)—— proc_macro实现合约init函数

我们通过属性宏来实现合约的init函数,call函数其实和init是类似的; GitHub - XuHugo/xwasm 构建属性宏,要在cargo.toml里面设置一些参数,这是必须的。一般来说,过程宏必须是一个库,或者作为工程的子库&…

桑晋秋:个性化头相关传递函数的研究动态及展望 | 演讲嘉宾公布

一、3D 音频专题论坛 3D 音频专题论坛将于3月27日同期举办! 3D音频技术不仅能够提供更加真实、沉浸的虚拟世界体验,跨越时空的限制,探索未知的世界。同时,提供更加丰富、立体的情感表达和交流方式,让人类能够更加深入地…

前端javascript的DOM对象操作技巧,全场景解析

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 所属的专栏:前端泛海 景天的主页:景天科技苑 文章目录 1.js的DOM介绍2.节点元素层级关系3.通过js修改,清空节点…

第九篇 – 过程发现(Process Discovery)是如何赋能数字化市场营销全过程?- 我为什么要翻译介绍美国人工智能科技巨头IAB公司

IAB平台,使命和功能 IAB成立于1996年,总部位于纽约市。 作为美国的人工智能科技巨头社会媒体和营销专业平台公司,互动广告局(IAB- the Interactive Advertising Bureau)自1996年成立以来,先后为700多家媒体…

Kubesphere前端项目分析

1 KubeSphere console功能导图 模块: 命令行工具 (kubectl) 日志(Logging) 平台设置(Platform Settings) 服务组件(Service Components) 监控和警报(Monitoring & Alerting&…

iOS-系统弹窗调用

代码: UIAlertController *alertViewController [UIAlertController alertControllerWithTitle:"请选择方式" message:nil preferredStyle:UIAlertControllerStyleActionSheet];// style 为 sheet UIAlertAction *cancle [UIAlertAction actionWithTit…

纳斯达克大屏:NASDAQ广告大屏多少钱?

大舍传媒 近期,美国纽约纳斯达克大屏广告(NASDAQ广告大屏)备受瞩目,众多企业纷纷关注其广告投放效果以及费用。纳斯达克大屏广告的价格究竟是多少呢?下面我们从事件的经过、相关背景信息以及对其影响和意义的分析等方…

革命性创新!AI大模型开发崭新风貌

在当今科技日新月异的时代,人工智能(AI)作为一项颠覆性的技术,正以革命性的创新改变着我们的生活方式和工作方式。而在AI领域中,大模型的开发更是成为了展示技术实力和提升智能化水平的重要标志。 随着数据量的不断增…

STM32 NAND FLASH知识点

1.NAND FLASH的简介 NAND FLASH 的概念是由东芝公司在 1989 年率先提出,它内部采用非线性宏单元模式,为固态大容量内存的实现提供了廉价有效的解决方案。 NAND FLASH 存储器具有容量较大,改写速度快等优点,适用于大量数据的存储&…