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

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

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

结束

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

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

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

相关文章

华为Web举例:私网用户通过三元组NAT访问Internet

Web举例:私网用户通过三元组NAT访问Internet 介绍私网用户通过三元组NAT访问Internet的配置举例。 组网需求 某公司在网络边界处部署了FW作为安全网关。为了使私网中10.1.1.0/24网段的用户可以正常访问Internet,需要在FW上配置源NAT策略。除了公网接口…

修改表中某个字段等于另一个字段减去 2 小时的 SQL

需求:将表中到达时间按照客户要求改为比赛时间的提前 N 小时,具体如下: 表结构 update contestSchedule SET mainRefereeArrivalTimeDATE_FORMAT(CONCAT(2024-03-04 ,gameTime)- INTERVAL 2 HOUR, %H:%i), assistantRefereeArrivalTimeDAT…

2024关于idea激活码报This license xxxx has been suspended

HOSTS文件中增加 0.0.0.0 www.jetbrains.com 0.0.0.0 account.jetbrains.com 然后

代码随想录 二叉树第五周

目录 235.二叉搜索树的最近公共祖先 701.二叉搜索树的插入操作 450.删除二叉搜索树中的节点 669.修建二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树 235.二叉搜索树的最近公共祖先 235. 二叉搜索树的最近公共祖先 中等 给定一个二叉搜索树,…

浅谈MySQL 索引

MySQL 索引类型 1:主键索引 索引列中的值必须是唯一的,不允许有空值。 2:普通索引 MySQL中基本索引类型,没有什么限制,允许在定义索引的列中插入重复值和空值。 3:唯一索引 索引列中的值必须是唯一的&…

App前端开发跨平台框架比较:React Native、Flutter、Xamarin等

引言 移动应用开发领域的跨平台框架正在不断演进,为开发者提供更多选择。在本文中,我们将比较几个流行的跨平台框架:React Native、Flutter和Xamarin等。讨论它们的优缺点、适用场景以及开发体验。 第一部分 React Native: 优缺点、适用场景…

uniapp实现单选框卡片选择器,支持微信小程序、H5等多端

采用uniapp-vue3实现的一款单选框卡片选择器&#xff0c;纯CSS实现样式和交互&#xff0c;提供丝滑的动画选中效果&#xff0c;支持不同主题配置&#xff0c;适配多端 可到插件市场下载尝试&#xff1a; https://ext.dcloud.net.cn/plugin?id16901 使用示例 示例代码 <te…

Linux操作系统项目上传Github代码仓库指南

文章目录 1 创建SSH key2.本地git的用户名和邮箱设置3.测试连接4.创建仓库5.终端项目上传 1 创建SSH key 1.登录github官网,点击个人头像,点击Settings,然后点击SSH and GPG keys,再点击New SSH key。 Title 可以随便取&#xff0c;但是 key 需要通过终端生成。 Linux终端执行…

探究java反射取值与方法取值性能对比

探究java反射取值与方法取值性能对比 由于我开发框架时&#xff0c;经常需要对象取值。常用的取值方式有&#xff1a; 反射取值方法调用取值 环境 同一台电脑&#xff1a; jdk 21.0.2 idea 2023.3.3 1. 测试代码&#xff08;常用&#xff09; 1.1 反射取值 public stat…

【Web】浅浅地聊JDBC java.sql.Driver的SPI后门

目录 SPI定义 SPI核心方法和类 最简单的SPIdemo演示 回顾JCBC基本流程 为什么JDBC要有SPI JDBC java.sql.Driver后门利用与验证 SPI定义 SPI&#xff1a; Service Provider Interface 官方定义&#xff1a; 直译过来是服务提供者接口&#xff0c;学名为服务发现机制 它通…

如何在windows上像linux的ssh一样远程访问其它windows

主要分成两部分&#xff1a; 1. 如何远程执行指令 使用psexec&#xff0c;示例如下&#xff1a; PsExec64.exe \\远程计算机ip -u 用户名 -p 密码 -i cmd.exe 这样你就能连接到远程计算机上执行命令了&#xff0c;效果如下 2. 如何远程拷贝文件 分成两步&#xff1a; net…

【语法基础练习】1.变量、输入输出、表达式与顺序语句

&#x1f338;博主主页&#xff1a;釉色清风&#x1f338;文章专栏&#xff1a;算法练习&#x1f338;今日语录&#xff1a;You don’t know until you try. 文章简介&#xff1a;下面的题目是AcWing网站语法基础练习篇的第一小节&#xff0c;内容基础&#xff0c;难度&#xf…

计算机组成原理-累加器实验——沐雨先生

一、实验目的 1.理解累加器的概念和作用 2.连接运算器、存储器和累加器&#xff0c;熟悉计算机的数据通路 3.掌握使用微命令执行各种操作的方法。 二、实验要求 1.做好实验预习&#xff0c;读懂实验电路图&#xff0c;熟悉实验元器件的功能特性和使用方法。在实验之前设计…

list链表的创建,排序,插入, test ok

1. 链表的建立&#xff0c;打印 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <stack> #include <iostream> #include <string.h> #include <string>using namespace std;struct node {int data;s…

Vue项目性能分析工具: vue-cli-plugin-webpack-bundle-analyzer

在优化项目的时候&#xff0c;每次打包后只知道包文件大&#xff0c;却不知道那个文件大&#xff0c;那个文件还有优化的空间&#xff0c;所以&#xff0c;推荐一款工具&#xff0c;只要在项目中安装配置一下&#xff0c;便可以一目了然的呈现出打包后资源所占的比例&#xff0…

军用技术民用开花,Shokz韶音要做下一个“AirPods”

Shokz韶音对打造消费级骨传导耳机的执念始于2007年。 在这之前&#xff0c;它已经成为亚洲最大的军用耳机生产商&#xff0c;以代工订单为主的商业模式是Shokz韶音的主营业务。虽然Shokz韶音靠代工赚得了第一桶金&#xff0c;但军用耳机的垂直细分市场容量有限&#xff0c;市场…

Python 实现冒泡排序算法

Python 实现冒泡排序算法 下面是用 Python 实现的冒泡排序算法示例代码&#xff1a; def bubble_sort(arr):n len(arr)# 遍历数组元素for i in range(n):# 每次遍历都将最大的元素移动到最后for j in range(0, n-i-1):# 如果相邻的元素逆序&#xff0c;则交换它们if arr[j] …

Kafka数据推送配置 | 如何设置账号密码验证?

背景&#xff1a;之前资产信息用网络接口进行数据推送&#xff0c;但是接口推送需要验证而且反应较慢。Kafak中间件提供了另一种可行的数据推送方式&#xff0c;它可以进行消息队列推送&#xff0c;且反应速度快。但是Kafka需部署在公网环境&#xff0c;并进行登录验证&#xf…

excel 动态列导出

excel动态列&#xff0c;只好用poi来写了&#xff0c;也并不复杂&#xff0c;一样就这个件事情抽像为几步&#xff0c;就是套路了&#xff0c;开发效率就上去了。 1 准备空模板 导出操作与excel模板的导出一样&#xff0c;可以参考excel导出标准化 2 自定义SheetWriteHandler …

网络信息安全:11个常见漏洞类型汇总

一、SQL注入漏洞 SQL注入攻击&#xff08;SQL Injection&#xff09;&#xff0c;简称注入攻击、SQL注入&#xff0c;被广泛用于非法获取网站控制权&#xff0c;是发生在应用程序的数据库层上的安全漏洞。 在设计程序&#xff0c;忽略了对输入字符串中夹带的SQL指令的检查&…