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)

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

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

相关文章

docker 部署 mysql8.0 无法访问

文章目录 &#x1f5fd;先来说我的是什么情况&#x1fa81;问题描述&#x1fa81;解决方法&#xff1a;✔️1 重启iptables✔️2 重启docker &#x1fa81;其他有可能连不上的原因✔️1 客户端不支持caching_sha2_password的加密方式✔️2 my.conf 配置只有本机可以访问 &#…

销售易和管易云接口打通对接实战

销售易和管易云接口打通对接实战 来源系统:销售易 销售易CRM支持企业从营销、销售到服务的全流程自动化业务场景&#xff0c;创新性地利用AI、大数据、物联网等新型互联网技术打造双中台型CRM&#xff1b;既能帮助B2B企业连接外部经销商、服务商、产品以及最终用户&#xff0c;…

虚拟局域网VLAN

概述 广播域 使用一个或多个以太网交换机互连接起来的交互式以太网&#xff0c;其所有站点都属于同一个广播域&#xff0c;随着交换式以太网规模的扩大&#xff0c;广播域响应扩大&#xff0c;从而形成一个巨大的广播域。 但是巨大的广播域会带来很多的弊端&#xff1a; 广…

redis 高级篇4 分布式锁

一 redis架构图 1.1 redis的架构图 1.2 分布式锁满足条件 1.独占性&#xff1b;2.高可用&#xff1b;3.防死锁&#xff1b;4.不乱抢&#xff1b;5.重入性 二 分布式锁的案例情况 2.1 分布式锁1:单机分布式部署 描述&#xff1a; 使用lock锁和synchronized&#xff0c;单机…

在海外如何让应用在Google Play上得到推荐

在Google Play商店中获得推荐&#xff0c;可以为应用程序带来额外的知名度。 1、应用程序的质量。 确保我们的应用是高质量的并且具有最新的Google Play功能和更新。另外需要应用程序在所有Android设备上兼容。需要将应用程序本地化&#xff0c;从而满足世界各地用户的需求&am…

HDFS中namenode安全模式

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

【Kaggle】Kaggle数据集如何使用命令语句下载?

一、Kaggle数据集如何下载 1.1 问题的起因 最近看到了 Google 组织的 Kaggle 比赛&#xff0c;想自己试一下&#xff0c;但是数据集太大了&#xff0c;将近有370G的数据。直接下载的话&#xff0c;网速太慢&#xff0c;可能要下载3-4天&#xff0c;所以萌生了用命令语句下载的…

Stream流

forEach方法,用来遍历流中的数据 是一个终结方法,遍历之后就不能继续调用Stream流中的其他方法 //获取一个Stream流Stream<String> stream Stream.of("张三", "李四", "王五", "赵六", "田七");//使用Stream流中的方…

Go Ethereum源码学习笔记000

Go Ethereum源码学习笔记 前言时代的弄潮儿: Blockchain为什么要研究以太坊& Go-Ethereum 的原理 前言 这个专栏的内容是免费的&#xff0c;因为自己这边都是基于开源库和开源内容整理的学习笔记&#xff0c;在这个过程中进行增删改查&#xff0c;将自己的理解融入其中&am…

【前端知识】React 基础巩固(三十九)——React-Router的基本使用

React 基础巩固(三十九)——React-Router的基本使用 一、Router的基本使用 Router中包含了对路径改变的监听&#xff0c;并且会将相应的路径传递给子组件。 Router包括两个API&#xff1a; BrowserRouter使用history模式 HashRouter使用hash模式&#xff08;路径后面带有#号…

RBAC三级树状菜单实现(从前端到后端)未完待续

1、表格设计 RBAC 2、前端路由 根据不同的用户id显示不同的菜单。 根据路由 3、多级菜单 展示所有权限&#xff0c;并且根据当前用户id展示它所属的角色的所有菜单。 前端树状展示 思路&#xff1a; 后端&#xff1a;传给前端map&#xff0c;map里1个是所有菜单&am…

[golang gin框架] 44.Gin商城项目-微服务实战之后台Rbac微服务之权限的增删改查微服务

上一节讲解了[golang gin框架] 43.Gin商城项目-微服务实战之后台Rbac微服务之管理员的增删改查以及管理员和角色关联,这里讲解权限管理Rbac微服务权限的增删改查微服务 一.实现后台权限管理Rbac之权限增删改查微服务服务端功能 1.创建Access模型 要实现权限的增删改查,就需要…

NIDEC COMPONENTS尼得科科宝滑动型DIP开关各系列介绍

今天AMEYA360对尼得科科宝电子滑动型DIP开关各系列参数进行详细介绍&#xff0c;方便大家选择适合自己的型号。 系列一、滑动型DIP开关 CVS 针脚数&#xff1a;1, 2, 3, 4, 8 安装类型&#xff1a;表面贴装&#xff0c;通孔 可水洗&#xff1a;无 端子类型&#xff1a;PC引脚(只…

Linux echo命令与反引号、重定向符号以及管道符

echo echo命令echo结合反引号echo结合重定向符echo结合管道符 echo命令 Linux中的echo命令用于在终端输出指定的文本内容或变量值。 基本语法如下&#xff1a; echo [选项] [字符串]常用选项包括&#xff1a; -e&#xff1a;启用特殊字符的解析&#xff0c;例如\n表示换行符…

RPC与REST有什么区别?

原文&#xff1a;RPC与REST有什么区别&#xff1f; 背景 好多开发的同学在工作中&#xff0c;经常分不清RPC和REST的区别&#xff0c;导致经常沟通不在一个层次上。甚至有些同学把这两个当成同一个东西。 RPC与REST的区别&#xff1f; 对比名称 rpc rest 备注 架构风格 RP…

vue使用,引用 腾讯pag 播放文件,且解决销毁问题

PAG官网&#xff1a;官网 https://pag.art/docs/sdk.html#web-%E7%AB%AF%E6%8E%A5%E5%85%A5 一、创建依赖准备 libpag.min.js libpag.wasm去git上下载就行了 https://github.com/Tencent/libpag/releases/tag/v4.3.3 下载 libpag_4.3.3_web.zip 里边有 两个文件放到 public 中…

Scala定时任务启动例子

Scala定时任务启动例子 Scala代码 package com.scala.testimport java.time.LocalDateTime import java.util.concurrent.Executors import scala.concurrent.duration._ import org.apache.spark.sql.SparkSessionobject TimingTaskTest {def main(args: Array[String]): Un…

[个人笔记] Windows配置NTP时间同步

Windows - 运维篇 第六章 Windows配置NTP时间同步 Windows - 运维篇系列文章回顾Windows配置NTP时间同步域控环境的NTP配置工作组环境的NTP配置Windows的CMD部分命令集 参考来源 系列文章回顾 第一章 迁移WinSrv系统到虚拟机 第二章 本地安全策略xcopy实现实时备份文件夹内容 …

重发布及路由策略

目录 重发布 作用 条件 规则 名词解释点 点 向 单点重发布 双点重发布 路由策略 控制层流量和数据层流量 抓流量 ACL列表 前缀列表( ip-prefix) 实例演示 做策略 过滤策略(过滤器-策略) 路由策略(route-policy) 基本配置 路由策略使用 配置实验 重发布 在…

【C++】反向迭代器的模拟实现通用(可运用于vector,string,list等模拟容器)

文章目录 前言一、反向迭代器封装&#xff08;reverseiterator&#xff09;1.构造函数1解引用操作.3.->运算符重载4.前置&#xff0c;后置5.前置--&#xff0c;后置--6.不等号运算符重载7.完整代码 二、rbegin&#xff08;&#xff09;以及rend&#xff08;&#xff09;1.rb…