图数据库:neo4j学习笔记

参考资料:neo4j 教程_w3cschool

Springboot集成Neo4j_喝醉的咕咕鸟的博客-CSDN博客

SpringBoot 整合 Neo4j_springboot neo4j_懒小猿的博客-CSDN博客

图数据库Neo4j实战(全网最详细教程)_neo4j使用教程_星川皆无恙的博客-CSDN博客

代码片段_知识图谱Neo4j Cypher查询语言详解

Windows安装

1、桌面版安装

下载地址:Neo4j Desktop Download | Free Graph Database Download

输入个人信息后,会有一个激活码,保存下来,后面要用!

直接默认安装,安装位置可改,第一次打开时会让你输入刚刚获取到的激活码。

2、zip安装

下载地址:Neo4j Deployment Center - Graph Database & Analytics

(此处下载是community版)

下载完成后,将压缩包解压到一个文件夹中

环境配置

新建变量名写:NEO4J_HOME, 变量值为刚刚的文件夹路径;

Path后面添加上路径:%NEO4J_HOME%\bin。

启动

在bin路径下打开cmd,输入:neo4j.bat console

出现以下为成功

若启动时JDK版本报错,可以安装指定版本JDK,并需要改下bin目录下的neo4j.bat, 把set "JAVA_HOME=XXXX"加入进去

访问数据

在浏览器中输入:http://localhost:7474/

Usernameneo4j (这个用户名好像是不可以修改的)
Password 默认是neo4j,zip版本第一次进入会提示你修改。

参考

篇一:Neo4j图形数据库的安装与环境配置(普通版与Desktop版)_neo4j desktop和neo4j区别_小赵de碎星采摘馆的博客-CSDN博客

图数据库Neo4j下载、安装_neo4j3.5下载_Golden-Star的博客-CSDN博客

Window下Neo4j安装教程

介绍

图是一组节点和连接这些节点的关系。图形数据存储在节点和关系在属性的形式。属性是键值对表示数据。Neo4j图数据库主要有以下组成元素:节点、属性、关系、标签

节点

节点(Node)是图数据库中的一个基本元素,用来表示一个实体记录。

1、节点是主要的数据元素,节点通过关系连接到其他节点。节点可以具有一个或多个属性(即,存储为键/值对的属性)。

2、节点有一个或多个标签,用于描述其在图表中的作用。

属性

属性(Property)是用于描述图节点和关系的键值对。

1、属性是命名值,其中名称(或键)是字符串属性可以被索引和约束

2、可以从多个属性创建复合索引

关系

关系(Relationship)同样是图数据库的基本元素。关系就是用来连接两个节点,,其始端和末端都必须是节点,关系不能指向空也不能从空发起。关系和节点一样可以包含多个属性,但关系只能有一个类型(Type) 。

1、关系连接两个节点关系是方向性的节点可以有多个甚至递归的关系。

2、关系可以有一个或多个属性(即存储为键/值对的属性)

3、基于方向性,Neo4j关系被分为两种主要类型:单向关系、双向关系

标签

标签(Label)将一个公共名称与一组节点或关系相关联, 节点或关系可以包含一个或多个标签。 我们可以为现有节点或关系创建新标签, 我们可以从现有节点或关系中删除标签。

1、标签用于将节点分组一个节点可以具有多个标签对标签进行索引。

2、以加速在图中查找节点本机标签索引针对速度进行了优化。

cyher

Neo4j的操作语言称为cyher,相当于关系数据库sql。

节点

Cypher 采用一对圆括号 () 来表示节点,如 (n:角色) 表示一个 角色 节点,n 是变量名 ,供命令执行时用 n 来访问这个节点,在命令执行完毕后就无法使用了。同时单独的 () 表示一个匿名节点 ,在匹配时表示匹配所有节点。

属性

(n:角色{name:'郭靖'}) ,{}中包含的name:'郭靖'就为一组属性键值对。

关系

--表示无方向的关系

--> 表示有方向的关系

-[r]-> 则给关系赋予一个变量名r,方便对这个关系进行操作

-[r:配偶]-> 匹配关系为 配偶 的类型

关系路径长度匹配

在关系中,允许匹配特定路径长度的内容,如:

  • (n)-[*2]->(m) 表示关系数量为 2 的 3 个节点的匹配, 等价于 (a)-[]->()-[]->(b)
  • (n)-[*2..4]->(m) 匹配路径长度为 2 到 4 之间的路径
  • (n)-[*2..]->(m) 匹配路径长度大于 2 的路径
  • (n)-[*..4]->(m) 匹配路径长度小于 4 的路径
  • (n)-[*]->(m) 匹配任意长度的路径

列表

Cypher 支持列表操作,通过 [] 来创建列表。

语法

cypher语法请参考:Cypher Cheat Sheet - Neo4j Documentation Cheat Sheet

CREATE

​我们应该使用此标签名称来访问节点详细信息。​

MERGE 命令是 CREATE 命令和 MATCH 命令的组合。 MERGE 在图中搜索给定模式,如果存在,则返回结果,如果不存在,则创建并返回结果。

Cobol 复制代码
1、创建一个没有属性的节点
CREATE (节点名称:节点标签名称)

2、创建一个有属性的节点
CREATE (节点名称:节点标签名称{ 属性名称1:属性值,属性名称2:属性值,属性名称3:属性值 })

3、创建两个节点和关系属性
CREATE(节点名称1:节点标签名称1{属性})-[关系名称:关系标签名称{属性}]->(节点名称2:节点标签名称2{属性})

MATCH

MATCH 命令用于从数据库中获取节点,关系的信息,类似于 SQL 中的 SELECT。RETURN 则是在 MATCH 搜索完成后返回数据,因此 MATCH 必须与 RETURN 同时使用。

ptional match类似于 match,不同之处在于 optional match 在匹配不到内容时返回 null 方便查询继续进行,而 match 直接返回查询无结果

Cobol 复制代码
1、获取有关节点
match (变量名:节点的标签名称) return n

MATCH (变量名:节点的标签名称 {属性名称1:属性值,属性名称2:属性值}) RETURN 变量名

2、使用两个现有节点:节点标签名称1和节点标签名称2创建与属性的关系
MATCH (变量名1:节点标签名称1),(变量名2:节点标签名称2)
CREATE (变量名1)-[关系名称:关系标签名称{属性}]->(变量名2)
RETURN 关系名称

RETURN

Cobol 复制代码
RETURN 变量名,变量名.属性名称1

WHERE

WHERE 可以结合函数 exists() ,字符串匹配 starts with,ends with,contains,逻辑匹配 in,not,and,or 和正则表达式匹配进行更加精细的匹配,正则表达式的语法为 =~ 'regexp'。

Cobol 复制代码
 where 变量名.属性名称=属性值

DELETE

从数据库永久删除节点及其关联的属性。

Cobol 复制代码
DELETE 变量名列表

REMOVE

删除节点或关系的标签或属性

Cobol 复制代码
DELETE 变量名.属性名称
DELETE 变量名.标签名称
例如:
match (n:角色) where n.name='金轮法王' remove n.from return n
match (n:角色)-[r]-() where n.name='金轮法王' delete n,r
清空数据库:match (n) optional match (n)-[r]-() delete n,r

SET

用于给现有节点或关系添加新属性,因此,SET 需要配合 MATCH 使用。

Cobol 复制代码
SET 变量名.属性名= 属性值
例如:match (n:角色) where n.name='杨过' set n.nickname='西狂' return n
相关推荐
爱吃南瓜的北瓜几秒前
Redis的Key的过期策略是怎样实现的?
数据库·redis·bootstrap
一心只为学15 分钟前
Oracle密码过期问题,设置永不过期
数据库·oracle
小光学长24 分钟前
基于vue框架的宠物销售管理系统3m9h3(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
数据库
青椒大仙KI1134 分钟前
24/9/19 算法笔记 kaggle BankChurn数据分类
笔记·算法·分类
小菜yh1 小时前
关于Redis
java·数据库·spring boot·redis·spring·缓存
Microsoft Word1 小时前
数据库系统原理(第一章 数据库概述)
数据库·oracle
liangbm31 小时前
数学建模笔记——动态规划
笔记·python·算法·数学建模·动态规划·背包问题·优化问题
华为云开源1 小时前
openGemini 社区人才培养计划:助力成长,培养新一代云原生数据库人才
数据库·云原生·开源
潮汐退涨月冷风霜1 小时前
机器学习之非监督学习(四)K-means 聚类算法
学习·算法·机器学习
GoppViper1 小时前
golang学习笔记29——golang 中如何将 GitHub 最新提交的版本设置为 v1.0.0
笔记·git·后端·学习·golang·github·源代码管理