neo4j教程-Cypher操作
Cypher基础操作
Cypher是图形存储数据库Neo4j的查询语言,Cypher是通过模式匹配Neo4j数据库中的节点和关系,从而对数据库Neo4j中的节点和关系进行一系列的相关操作。
下面,通过一张表来介绍一下常用的Neo4j操作命令及相关说明,具体如表所示。
| 操作命令 | 相关说明 |
|---|---|
| CREATE | 创建节点、关系 |
| MATCH | 查找所有符合给定模式的节点、关系以及属性数据 |
| RETURN | 返回查询结果 |
| WHERE | 过滤条件,筛选出符合条件的数据 |
| DELETE | 永久删除节点和关系 |
| REMOVE | 删除节点的属性 |
增-CREATE命令
语法
使用CREATE命令创建节点、关系,具体语法如下:
# 创建带有标签的节点
CREATE (<node-name>:<label-name>)
# 创建带有标签、属性的节点
CREATE (<node-name>:<label-name>{<property-name>:<property-value>})
# 创建带有标签的关系
CREATE (<node1-name>:<label1-name>)-[(<relationship-name>:<relationship-label-name>)] ->(<node2-name>:<label2-name>)
上述语法中,CREATE是创建节点、关系的命令;
- <node-name>表示节点名称,Neo4j使用此名称将该节点的详细信息存储在Database.As中,用作Neo4j数据库管理(注:不能使用节点名称来访问节点的详细信息);
- <label-name>表示标签名称,是内部节点名称的别名(注:可使用标签名称访问节点的详细信息);
- <property-name>表示属性名;
- < property-value >表示属性值;
- <relationship-name>表示关系;
- <relationship-label-name>表示关系的标签。
案例练习
我们演示创建一个节点p,其中标签为Person、属性分别为“name、age、hobby”、属性值分别为“张三、18、swimming”,具体如下:
$ create (p:Person{name:'张三',age:18,hobby:'swimming'})
执行上述命令后,Web UI界面的控制台返回“Added 1 label, created 1 node, set 3 properties, completed after 15 ms.”信息,说明我们新增一个标签、创建一个节点,并设置了三个属性。

下面,我们演示创建标签为Likes的关系friend,其中起始节点为Jac、属性name为Jack,结束节点为Emm、属性name为Emma,具体如下:
$ create (Jac:Person{name:'Jack'})-[friend:Likes]->(Emma:Person{name:'Emma'})
执行上述命令后,Web UI界面的控制台返回“Added 2 labels, created 2 nodes, set 2 properties, created 1 relationship, completed after 3 ms.”信息,说明我们新增两个标签、创建两个节点、设置两个属性、创建一个关系(注意:标签Person是节点的标签;标签Likes是关系的标签)。

查看图示数据


查
1.match命令
语法
使用MATCH命令查找所有符合给定模式的节点、关系以及属性数据,具体语法如下:
MATCH (<node-name>:<label-name>)
上述语法中,MATCH用于查找所有符合给定模式的节点、关系以及属性数据的命令;<node-name>表示节点名称;<label-name>表示标签名称。
案例练习
演示查找数据库中标签为Person节点p的详细信息,具体如下:
$ match (p:Person)

从图中可看出是语法错误,若想要使用MATCH命令,则需要与RETURN命令或更新命令结合使用。
2.RETURN命令
语法
使用RETURN命令返回查询结果,具体语法如下:
RETURN (<node-name>:<property-name>)
上述语法中,RETURN是用于返回查询结果的命令;<node-name>表示节点名称;< property -name>表示属性名。
案例练习
下面,我们演示返回属性为age的节点p的所有信息,具体如下:
$ return p.age
执行上述命令后,查看Web UI界面控制台的返回结果,具体如图所示。

从图中可看出是语法错误,若想要使用RETURN命令,则需要与METCH命令或CREATE命令结合使用。
查询案例练习(正确版)
题目1:我们演示查询数据库中节点p的详细信息,具体如下:
$ match (p:Person) return p.name,p.age,p.hobby

若想要使用RETURN命令,则需要与METCH命令或CREATE命令结合使用。
题目2:我们演示查询数据库中所有节点的详细信息,具体如下:
$ match (n) return n

如果我们要按照某种条件查询呢?–WHERE命令
3.WHERE命令
语法
使用WHERE命令查询符合条件的数据,具体语法如下:
WHERE <condition>
上述语法中,WHERE是用于查询符合条件的数据命令,该命令需要与MATCH命令和RETURN命令结合使用;<condition>表示查询的条件。
案例练习
演示查询符合条件“p.name=‘张三’”的节点详细信息,具体如下:
$ match (p:Person) where p.name='张三' return p

和sql很像!
删
1.-DELETE命令
语法
使用DELETE命令永久的删除节点或关系,具体语法如下:
# 删除节点
DELETE <node-name-list>
# 删除节点及关联的关系
DELETE <node1-name>,<node2-name>,<relationship-name>
上述语法中,DELETE是用于永久删除节点或关系的命令,该命令需要与MATCH命令结合使用,删除满足某个条件的节点;<node-name-list>表示节点名称列表;<relationship-name>表示关系名称。
案例练习
题目1:我们演示删除属性name为张三的节点,具体如下:
$ match (p{name:'Bob'}) delete p

执行“match (p:Person) return p”命令,然后查看Web UI界面控制台的返回结果,如图所示。

若是想要清空数据库中的节点或者关系,则可以执行“match (n) detach delete n”命令,但是该命令要慎用。
题目2:我们演示删除属性name分别为Jack和Emma的节点以及相关联的关系,具体如下:
$ match (Jac{name:'Jack'})-[friend]->(Emm{name:'Emma'}) delete Jac,Emm,friend

2.REMOVE命令
语法
使用REMOVE命令删除节点的属性,具体语法如下:
# 删除节点的属性
REMOVE <property-name-list>
上述语法中,REMOVE是用于删除节点的属性的命令,该命令需要与MATCH命令结合使用;<property-name-list>表示节点的属性名称列表。
案例练习
我们演示删除节点的属性hobby,由于上述小节中演示删除了数据库中的所有节点,导致数据库中无任何节点,因此,需要先执行创建节点的命令,然后再执行删除属性hobby的命令,具体如下:
$ create (p:Person{name:'Bob',age:22,hobby:'go dancing'})
$ match (p:Person) remove p.hobby
创建节点

删除属性

$match (n) detach delete n
#清空Neo4j数据库中的节点和关系数据
其他
先行工作
插入节点、关系
create (Jac:Person{name:'Jack',age:19})-[friend:Likes]->(Emma:Person{name:'Emma',age:17})-[girlfriend:Likes]->(Rose:Person{name:'Rose',age:17})

列访问、排序和分页
查询节点姓名、年龄并按照年龄排序返回前十个
SQL语句
SELECT p.name, p.age
FROM Person as p
ORDER BY p.age DESC
LIMIT 10;
Neo4j语句
MATCH (p:Person)
RETURN p.name, p.age
ORDER BY p.age DESC
LIMIT 10;

索引(Indexing)
如果要通过此节点标签和属性组合快速匹配,则可以在导入期间创建索引,这很有意义。
CREATE INDEX ON :Person(name);
过滤
Cypher中具有完整的集合支持,不仅包括IN运算符,还包括集合函数、谓词和转换。
查找名字在’Bob’,'Emma’中的节点
MATCH (p:Person)
WHERE p.name IN ['Bob','Emma']
RETURN p.name, p.age;

按多个数字和文本谓词过滤
现在,让我们尝试找到一些名字以“ B”开头的大于17岁的节点。
sql语句
SELECT p.name, p.age
FROM Person AS p
WHERE p.name LIKE 'B%' AND p.age > 17;
在LIKE操作者通过所取代STARTS WITH(也有CONTAINS和ENDS WITH)所有其中的三个索引支持。
MATCH (p:Person)
WHERE p.name STARTS WITH "B" AND p.age > 17
RETURN p.name, p.age;

还可以使用正则表达式,例如p.name =~ "B."。
想学习更多请参考:史上最全-Neo4j相关资源传送门 - 知乎 (zhihu.com)
相关文章:
neo4j教程-Cypher操作
Cypher基础操作 Cypher是图形存储数据库Neo4j的查询语言,Cypher是通过模式匹配Neo4j数据库中的节点和关系,从而对数据库Neo4j中的节点和关系进行一系列的相关操作。 下面,通过一张表来介绍一下常用的Neo4j操作命令及相关说明,具…...
秋招算法备战第31天 | 贪心算法理论基础、455.分发饼干、376. 摆动序列、53. 最大子序和
贪心算法理论基础 贪心算法并没有固定的套路,唯一的难点就是如何通过局部最优,推出整体最优。如何验证可不可以用贪心算法呢?最好用的策略就是举反例,如果想不到反例,那么就试一试贪心吧。刷题或者面试的时候…...
页面生成图片或PDF node-egg
没有特别的幸运,那么就特别的努力!!! 中间件:页面生成图片 node-egg 涉及到技术node egg Puppeteer 解决文书智能生成多样化先看效果环境准备初始化项目 目录结构核心代码 完整代码https://gitee.com/hammer1010_ad…...
go常用知识点
go env -w GO111MODULEon go env -w GOPROXYhttps://goproxy.cn,direct 打包一个目录下的多个包时 go build ./… go install ./… 测试时,命令行:go test . //目录下所有单元测试都会执行 go test -v 目录 //测试覆盖率 go test -cover //使用cove…...
ComPDFKit PDF SDK(支持Web、Android、IOS、Windows、Server、API、跨平台)
1. SDK、API是什么? SDK是软件开发工具包的缩写,指的是一组用于开发软件应用的工具、库和文档。SDK包含一系列的函数、类和方法,开发人员可以使用这些工具和资源来开发、测试和部署应用程序。SDK可以提供各种功能和技术支持,如图…...
使用maven容器打包java项目
docker run --rm -v /path/to/your/microservice:/app -w /app maven:latest mvn clean package 解释一下上面的命令: docker run:运行Docker容器。--rm:在容器运行结束后自动删除容器,避免堆积未使用的容器。-v /path/to/you…...
超前端相关的学习网站和一些靠谱的小工具
CSS相关 1. CSS Battle - 在线比拼 CSS https://cssbattle.dev 在线比拼 CSS ,一个挺有趣的竞争性游戏,一共有12个级别,需要你用 HTML和 CSS 100%还原它给出的页面,然后再尽量减少代码,你也可以查看全球的排行榜&am…...
uniapp跳转到外部链接
// 一、先配置页面 {"path": "pages/webview/webview","style": {"navigationBarTitleText": ""} } // 二、编写页面 <template><web-view :src"src" /> </template><script> export def…...
初识DBT以及搭建第一个DBT工程
DBT是什么: 按照官方的说法,DBT 是一个数据转换流编排工具。个人理解就是,DBT是帮你编排SQL用的,你可以按照DBT的结构,构建好一个SQL的pipeline,然后让DBT帮你执行这个pipeline。我这里说的SQL pipeline的意…...
Python基于PyTorch实现卷积神经网络回归模型(CNN回归算法)项目实战
说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 卷积神经网络,简称为卷积网络,与普通神经网络的区别是它的卷积层内的神经元只覆…...
(AcWing)集合-Nim游戏
给定 n 堆石子以及一个由 k 个不同正整数构成的数字集合 S。 现在有两位玩家轮流操作,每次操作可以从任意一堆石子中拿取石子,每次拿取的石子数量必须包含于集合 S,最后无法进行操作的人视为失败。 问如果两人都采用最优策略,先…...
ConcurrentHashMap源码详解
本文已收录于专栏 《Java》 目录 概念说明数据结构线程安全HashMap示例运行结果ConcurrentHashMap示例运行结果 涉及技术Synchronized概念特性 CAS(Compare And Swap)概念原理代码演示没有使用CAS的代码运行结果使用CAS的代码运行结果 总结提升 概念说明 ConcurrentHashMap是Ja…...
医疗流程自动化盛行,RPA成为医疗保健行业的重点应用技术
随着我们进入新的科技纪元,机器人流程自动化(RPA)正快速地改变着我们的游戏规则。简单来说,RPA 就是模仿人类与电子系统的互动,自动化执行重复性的任务和操作序列。 医疗保健领域中,RPA 的应用具备巨大的潜…...
Java 版 spring cloud + spring boot 工程系统管理 工程项目管理系统源码 工程项目各模块及其功能点清单
工程项目各模块及其功能点清单 一、系统管理 1、数据字典:实现对数据字典标签的增删改查操作 2、编码管理:实现对系统编码的增删改查操作 3、用户管理:管理和查看用户角色 4、菜单管理:实现对系统菜单的增删改查操…...
java重试机制实现方案
本文内容是目前团队内小磊同学对重试机制实现方案的梳理总结。 从为什么需要重试的背景开始,到重试的场景,大致的一些设计思路,最后通过两个成熟的retry组件进行案例讲解,理论实战。 背景 重试是系统提高容错能力的一种手段。在一…...
参数量仅有50KB的超轻量级unet变种网络egeunet【参数和计算量降低494和160倍】医疗图像分割实践
今天看到一篇挺有意思的文章,做的是跟医疗图像分割相关的工作,但是不像之前看到的一些工作一味地去追求高精度,因为医疗领域本身就是一个相对特殊的行业,对于模型产生的结果的精确性要求是很高的,带来的是参数量级的庞…...
Android10 Settings系列(三)根据需求动态添加删除一级菜单、二级菜单的设置项
一 、背景 当时遇到定制需求,需要根据实际需要隐藏Settings的菜单项,于是开始了寻找方法 二 、准备工作 在看了一下源码,经过尝试后,确认生效后,就简单说明一下Settings中布局中主要组成元素 Settings中的菜单项是由 PreferenceScreen 和Preference组成的。其中Prefer…...
51单片机——串行口通信
目录 1、51单片机串口通信介绍 2、串行口相关寄存器 2.1 、串行口控制寄存器SCON和PCON 2.1.1 SCON:串行控制寄存器 (可位寻址) 2.1.2 PCON:电源控制寄存器(不可位寻址) 2.2、串行口数据缓冲寄存器SBUF 2.3、从机地址控制…...
洛谷题单 Part 6.7.1 矩阵
应队友要求,开始学线性代数,具体路线是矩阵 → \rightarrow →高斯消元 → \rightarrow →线性基。为多项式做个准备 P3390 【模板】矩阵快速幂 题面 板子,用结构体写的,感觉有点丑,一会儿看看题解有没有写得好看的 …...
Spring中c3p0与dbcp配置
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jee="http://www.springframework.org/schem…...
Q-Learning原理与工程实践:从试错记账到智能决策
1. 这不是数学课,是教你怎么让机器“试错成长”——Q-Learning到底在干啥?你有没有带过小孩学骑自行车?一开始扶着后座,他歪歪扭扭往前冲,撞到草坪、蹭到墙边、甚至直接摔进灌木丛——但每次摔倒后,他都会下…...
Hive 3.1.3部署后,你可能会遇到的3个连接与权限报错及解决实录
Hive 3.1.3部署后三大经典连接与权限问题深度解析 当你终于按照教程完成Hive 3.1.3的安装,却在最后连接阶段遭遇各种"拦路虎"时,那种挫败感我深有体会。本文将带你直击三个最具代表性的连接与权限问题,从报错现象到根因分析&#x…...
有哪些AI论文网站是真的坚守学术严谨,而不是空洞拼凑?
在 AI 写作技术迅猛发展的当下,越来越多的论文工具涌现出来,声称能快速生成高质量学术内容。然而,真正经得起推敲的却寥寥无几。许多工具看似功能强大,实则存在逻辑混乱、术语错误、格式不规范等硬伤,生成的文章缺乏深…...
嵌入式开发新趋势:从硬件参数到场景方案,AI与可靠性成关键
1. 展会现场与行业风向初探上周,我作为飞凌嵌入式的一名老员工,亲身参与了2024上海国际嵌入式展。这不仅仅是一次简单的产品展示,更像是一场行业同仁的“华山论剑”。从人头攒动的展台到技术论坛上激烈的讨论,你能清晰地感受到&am…...
告别Keil4编译报错!手把手教你为STC89C52RC单片机配置头文件路径(保姆级教程)
从零解决Keil4头文件报错:STC89C52RC开发环境配置全指南 当你第一次打开Keil4准备为STC89C52RC单片机编写程序时,满心期待地点下编译按钮,却看到屏幕上跳出"Cannot open source file REG52.H"的红色错误提示——这种挫败感我太熟悉…...
从Notebook到Lab再到Hub:一文讲清Jupyter生态在Linux服务器上的部署逻辑与选型
从Notebook到Lab再到Hub:一文讲清Jupyter生态在Linux服务器上的部署逻辑与选型 在数据科学和机器学习领域,Jupyter生态已经成为不可或缺的工具链。但对于刚接触这一技术栈的用户来说,Notebook、Lab和Hub这三个核心组件的关系常常令人困惑。本…...
Triangle Splatting:3D渲染中几何精度与效率的平衡技术
1. Triangle Splatting技术概述在实时3D渲染领域,渲染效率与视觉质量的平衡一直是核心挑战。传统三角形光栅化虽然硬件友好,但难以实现柔和的边缘效果;而基于点的渲染技术(如Gaussian Splatting)虽能产生自然过渡&…...
FanControl终极指南:3个核心模块助你打造完美风扇控制方案
FanControl终极指南:3个核心模块助你打造完美风扇控制方案 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trendin…...
Claude Desktop for Linux桌面集成:.desktop文件与MIME类型配置
Claude Desktop for Linux桌面集成:.desktop文件与MIME类型配置 【免费下载链接】claude-desktop-debian Claude Desktop for Linux 项目地址: https://gitcode.com/GitHub_Trending/cl/claude-desktop-debian Claude Desktop for Linux是一款强大的桌面应用…...
Ventoy主题定制完全指南:让你的启动界面焕然一新!
Ventoy主题定制完全指南:让你的启动界面焕然一新! 【免费下载链接】Ventoy A new bootable USB solution. 项目地址: https://gitcode.com/GitHub_Trending/ve/Ventoy 还在使用单调乏味的启动界面吗?Ventoy作为一款革命性的可启动U盘解…...
