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(也有CONTAINSENDS 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)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于峰谷分时电价引导下的电动汽车充电负荷优化(matlab代码)

目录 1 主要内容 峰谷电价优化 电动汽车充电负荷变化 2 部分代码 3 程序结果 1 主要内容 该程序基本复现《基于峰谷分时电价引导下的电动汽车充电负荷优化》&#xff0c;代码主要做的是基于NSGA-II的电动汽车充电负荷优化&#xff0c;首先&#xff0c;在研究电动汽车用户充…

【VSCode部署模型】导出TensorFlow2.X训练好的模型信息

参考tensorflow2.0 C加载python训练保存的pb模型 经过模型训练及保存&#xff0c;我们得到“OptimalModelDataSet2”文件夹&#xff0c;模型的保存方法(.h5或.pb文件)&#xff0c;参考【Visual Studio Code】c/c部署tensorflow训练的模型 其中“OptimalModelDataSet2”文件夹保…

HDFS中namenode安全模式

HDFS中namenode安全模式 安全模式的现象探究step1step2step3step4 安全模式的概述控制进入时间和离开条件安全模式自动进入离开安全模式手动进入离开 安全模式的现象探究 step1 HDFS集群在停机状态下&#xff0c;使用hdfs -daemon命令逐个进程启动集群&#xff0c;观察现象首…

太猛了,靠“吹牛”过顺丰一面,月薪30K

说在前面 在40岁老架构师尼恩的&#xff08;50&#xff09;读者社群中&#xff0c;经常有小伙伴&#xff0c;需要面试美团、京东、阿里、 百度、头条等大厂。 下面是一个5年小伙伴成功拿到通过了顺丰面试&#xff0c;拿到offer&#xff0c;月薪30K。 现在把面试真题和参考答…

音视频——压缩原理

H264视频压缩算法现在无疑是所有视频压缩技术中使用最广泛&#xff0c; 最流行的。随着 x264/openh264以及ffmpeg等开源库的推出&#xff0c;大多数使用者无需再对H264的细节做过多的研究&#xff0c;这大降低了人们使用H264的成本。 但为了用好H264&#xff0c;我们还是要对…

【KVC补充 Objective-C语言】

一、KVC补充 好,那么接下来,再给大家说一下这个KVC 1.首先我们说,这个KVC,就是指的什么 key value coding 吧 全称就是叫做(Key Value Coding),这是它的全称 那么,你在帮助文档里面搜的时候,你就搜key-value coding 是不是这个啊,key-value coding 然后点击,进…

NASM汇编

1. 前置知识 1. 汇编语言两种风格 intel&#xff1a;我们学的NASM就属于Intel风格AT&T&#xff1a;GCC后端工具默认使用这种风格&#xff0c;当然我们也可以加选项改成intel风格 2. 代码 1. 段分布 .text: 存放的是二进制机器码&#xff0c;只读.data: 存放有初始化的…

uni-app之微信小程序实现‘下载+保存至本地+预览’功能

目录 一、H5如何实现下载功能 二、微信小程序实现下载资源功能方面与H5有很大的不同 三、 微信小程序实现文件&#xff08;doc,pdf等格式&#xff0c;非图片&#xff09;下载&#xff08;下载->保存->预览&#xff09;功能 四、图片预览、保存、转发、收藏&#xff1…

flask中的cookies介绍

flask中的cookies介绍 “Cookie” 在 web 开发中是一种非常重要的技术&#xff0c;用于在客户端&#xff08;即用户的浏览器&#xff09;存储信息&#xff0c;以便在多个页面和多个访问会话之间保持状态。Cookies 通常用于记住用户的登录信息&#xff0c;跟踪用户在站点上的浏…

C++——继承(1)详解

目录 1.继承的含义 2.继承的定义&#xff1a; 3.继承方式 例子1&#xff1a;基类的访问限定符为public&#xff0c;两个派生类的继承方式分别为public、protected时&#xff1a; 例子2&#xff1a; 基类的访问限定符为protected&#xff0c;两个派生类的继承方式分别为pub…

机器学习深度学习——Dropout

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位即将上大四&#xff0c;正专攻机器学习的保研er &#x1f30c;上期文章&#xff1a;机器学习&&深度学习——权重衰减 &#x1f4da;订阅专栏&#xff1a;机器学习&&深度学习 希望文章对你们有所帮助 Drop…

百度与AI:历史、投资和监管

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 百度的人工智能在中国具有先发优势 随着ChatGPT的爆火&#xff0c;人工智能重新引起了投资者的注意&#xff0c;然而人工智能并不是突然爆火的&#xff0c;而是全球众多公司在人工智能技术上进行数十年如一日的研发和积累&a…

MYSQL 分库分表

公司现有业务不断发展&#xff0c;流量剧增&#xff0c;交易数量突破了千万订单&#xff0c;但是订单数据还是单表存储&#xff0c;主从分离后&#xff0c;虽然减少了缓解读请求的压力&#xff0c;但随着写入压力增加&#xff0c;数据库的查询和写入性能都在下降&#xff0c;这…

Kubernetes ConfigMap - Secret - 使用ConfigMap来配置 Redis

目录 ConfigMap &#xff1a; 参考文档&#xff1a;k8s -- ConfigMap - 简书 (jianshu.com) K8S ConfigMap使用 - 知乎 (zhihu.com) ConfigMap的作用类型&#xff1a; 可以作为卷的数据来源&#xff1a;使用 ConfigMap 来配置 Redis | Kubernetes 可以基于文件创建 Conf…

服务器介绍

本文章转载与b战up主谈三国圈&#xff0c;仅用于学习讨论&#xff0c;如有侵权&#xff0c;请联系博主 机架型服务器 堆出同时服务百万人次机组 刀型服务器 服务器炸了 比如用户访问量暴增 超过机组的峰值处理能力&#xff0c;进而导致卡顿或炸服&#xff0c; 适合企业的塔式…

idea下tomcat运行乱码问题解决方法

idea虚拟机选项添加-Dfile.encodingUTF-8

jdk1.7与jdk1.8的HashMap区别1-基本结构与属性对比

一、数据结构差别 1.7&#xff1a;数组链表 1.8&#xff1a;数组链表红黑树 当链表的长度大于8时&#xff0c;数组长度大于64&#xff0c;原来的链表数据结构变为红黑树 二、HashMap中的关键属性和方法区别 方法/变量/类 JDK7 JDK8 备注 DEFAULT_INITIAL_CAPACITY 16 16…

一个类似Office用户界面的WPF库

博主介绍&#xff1a; &#x1f308;一个10年开发经验.Net老程序员&#xff0c;微软MVP、博客专家、CSDN/阿里云 .Net领域优质创作者&#xff0c;专注于.Net领域知识、开源项目分享&#xff01;&#x1f308; &#x1f6d5;文末获取&#xff0c;加入交流群&#x1f6d5; &#…

HTML一些基础知识

1、Web标准&#xff1a;主要包含结构、表现、行为。结构用于对网页元素进行整理和分类&#xff0c;主要指HTML。表现用于设置网页元素的板式、颜色、大小等外观样式&#xff0c;主要指的是CSS。行为主要指的是网页模型的定义以及交互的编写&#xff0c;主要是js文件。 Html相当…

css定义超级链接a标签里面的title的样式

效果: 代码: 总结:此css 使用于任何元素,不仅仅是a标签!