Neo4j图形数据库-Cypher中常用指令

一、创建与修改

1.1 create

  • 创建图数据库中的节点、关系等元素:
CREATE (:Person {name: "Alice", age: 30})
CREATE (p1:Person {name: "Bob"})-[r:KNOWS]->(p2:Person {name: "Charlie"})
  • 批量创建元素
CREATE (n1:Node),(n2:Node),(n3:AnotherNode {prop: "value"})

1.2 merge

  • 不存在再创建,如果存在则直接返回已有元素,常用来避免重复创建相同的数据。
    (若数据库中没有 name 为 “David” 的Person 节点,就会创建一个;若已经存在,就返回这个已有的节点,可用于保证特定节点在数据库中的唯一性):
MERGE (p:Person {name: "David"})
  • 检查公司与员工之间的 WORKS_AT 关系是否存在,不存在就创建:
MERGE (c:Company {name: "TechCo"})<-[r:WORKS_AT]-(e:Employee {name: "Eve"})

1.3 set

  • 更新节点或关系的现有属性值:
MATCH (p:Person {name: "Alice"}) 
SET p.age = 35
  • 添加新属性:
MATCH (p:Person {name: "Bob"}) 
SET p.address = "123 Main St"

二、查询

2.1 match

  • 在图中查找符合特定模式的节点、关系等元素:
MATCH (p:Person) 
WHERE p.age > 25 
RETURN p
  • 查找带有特定关系的节点:
MATCH (p1:Person)-[r:KNOWS]->(p2:Person) 
RETURN p1, r, p2
  • 复杂模式匹配:可以构建包含多个节点、多种关系以及属性筛选条件等的复杂查询模式:
MATCH (p1:Person)-[r1:KNOWS]->(p2:Person)-[r2:WORKS_AT]->(c:Company)
WHERE p1.name = "Alice" AND c.name = "TechFirm"
RETURN p1, p2, r1, r2, c

2.2 return

  • 指定查询结束后要返回的数据内容,可以返回节点、关系、属性值等各种元素:
MATCH (p:Person) 
RETURN p.name, p.age
  • 使用聚合函数返回结果:
MATCH (p:Person) 
RETURN count(p)
  • 返回不同类型元素:可以返回多种不同类型的元素混合在一起:
MATCH (p:Person)-[r:KNOWS]->(p2:Person)
RETURN p, r, p2.name

2.3 where

  • 作为筛选条件的添加指令,常配合 MATCH 使用,用来限定查询结果需满足的条件:
MATCH (p:Person) 
WHERE p.name STARTS WITH "A" AND p.age < 40 
RETURN p
  • 支持多种比较运算符(如 =、>、<、>=、<=、<> 等)以及逻辑运算符(AND、OR、NOT 等)来构建复杂的筛选条件。
MATCH (p:Person)
WHERE p.name STARTS WITH "A" AND p.age < 40
RETURN p

三、删除

3.1 delete

  • 删除图数据库中的节点、关系等元素:
MATCH (p:Person {name: "Charlie"}) 
DELETE p
  • 删除关系:
MATCH (p1:Person)-[r:KNOWS]->(p2:Person) 
DELETE r

3.2 remove

  • 移除节点或关系上的属性:
MATCH (p:Product) 
REMOVE p.description

四、数据导入与加载

4.1 load csv

  • 从 CSV 文件中加载数据到图数据库中,常配合 CREATE 等指令来基于导入的数据创建节点或关系:
    (从本地 data.csv 文件(有表头的情况)读取每行数据,然后创建对应的 :User 节点并设置属性。)
LOAD CSV WITH HEADERS FROM "file:///data.csv" AS row 
CREATE (:User {name: row.name, email: row.email})

五、聚合与分组

5.1 group by

  • 类似于关系型数据库中的分组功能,用于按照指定的属性或表达式对查询结果进行分组,常配合聚合函数使用。
MATCH (p:Person) 
RETURN p.age, count(p) 
GROUP BY p.age

5.2 order by

  • 对查询返回的结果按照指定的属性或表达式进行排序,可以指定升序(ASC)或降序(DESC):
MATCH (p:Person) 
RETURN p.name, p.age 
ORDER BY p.age DESC

六、函数

6.1 聚合函数

  • count():用于统计节点、关系等元素的数量;
  • sum():对指定属性值进行求和;
  • avg():计算属性值的平均值;
  • min() 和 max():分别获取属性值的最小值和最大值。
MATCH (p:Person) 
RETURN count(p)MATCH (p:Product) 
RETURN sum(p.price)MATCH (p:Product) 
RETURN avg(p.price)MATCH (p:Product) 
RETURN min(p.price), max(p.price)

6.2 字符串函数

  • LEFT()、RIGHT():分别用于获取字符串左边或右边指定长度的子字符串;
  • SUBSTRING():截取字符串中间的部分;
  • UPPER()、LOWER():将字符串转换为大写或小写形式:
MATCH (p:Person) 
RETURN LEFT(p.name, 3)MATCH (p:Person) 
RETURN SUBSTRING(p.name, 2, 4)MATCH (p:Person) 
RETURN UPPER(p.name)

6.3 数学函数

  • ROUND():对数值进行四舍五入;
  • ABS():求绝对值;
MATCH (p:Product) 
RETURN ROUND(p.price)MATCH (p:Product) 
WHERE p.price < 0 
RETURN ABS(p.price)

6.4 类型转换函数

  • toFloat()、toInteger() 等:用于将属性值在不同数据类型之间进行转换:
MATCH (p:Product)
SET p.price = toFloat(p.price)

6.5 列表函数

  • size():用于获取列表类型属性的元素个数:
MATCH (p:Person {hobbies: ["reading", "swimming"]})
RETURN size(p.hobbies)

七、路径操作与相关函数

7.1 路径查找与表示

  • 使用路径表达式来描述节点之间的连接关系以及查找符合特定路径模式的元素:
    (查找从一个 :Node 节点出发,通过 1 到 3 条关系能够到达另一个 :Node 节点的所有路径,并返回这些路径。)
MATCH p=(n:Node)-[*1..3]->(m:Node)
RETURN p

7.2 路径相关函数

  • length():用于计算路径的长度(即路径中包含的关系数量):
MATCH p=(n:Node)-[*]->(m:Node)
RETURN length(p)
  • nodes() 和 rels():分别用于获取路径中的节点列表和关系列表:
MATCH p=(n:Node)-[*]->(m:Node)
RETURN nodes(p), rels(p)

八、索引与约束

8.1 create index

  • 创建索引,提高基于特定属性的查询效率:
    (为 :Person 节点的 name 属性创建索引,后续查询中如果频繁通过 name 属性查找 :Person 节点,速度会更快。)
CREATE INDEX FOR (p:Person) ON (p.name)

8.2 create constraint

  • 创建约束条件,常见的如唯一性约束,确保某个属性在特定标签的节点中具有唯一性。
    (保证 :Person 节点的 email 属性值在整个数据库中是唯一的,避免重复创建具有相同 email 属性的 :Person 节点。)
CREATE CONSTRAINT ON (p:Person) ASSERT p.email IS UNIQUE

九、事务与执行控制

9.1 begin、commit、rollback

  • BEGIN:用于开启一个事务,在事务内可以执行多条 Cypher 语句;
  • COMMIT 用于提交事务,使事务内对数据的修改操作生效;
  • ROLLBACK 用于回滚事务,撤销事务内已经执行的操作,恢复到事务开始前的数据状态。
BEGIN
CREATE (:TempNode {name: "Temp"})
// 其他操作
COMMIT

9.2 explain、profile

  • EXPLAIN:用于获取查询语句的执行计划信息,展示数据库将如何执行该查询,帮助分析查询性能、优化查询逻辑,但并不实际执行查询。
EXPLAIN MATCH (p:Person) 
RETURN p
  • PROFILE:不仅能获取执行计划,还会实际执行查询,并展示查询执行过程中的性能相关数据,比如各操作花费的时间等,方便定位查询性能瓶颈。
PROFILE MATCH (p:Person) 
RETURN p

以上涵盖了 Cypher 语言的大部分主要功能和指令,不过不同的图数据库系统在对 Cypher 语言的具体实现、支持程度以及语法细节等方面可能会存在一定差异,实际使用时需要结合具体的数据库平台来准确应用这些功能和指令。

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

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

相关文章

【springboot】读取外部的配置文件

【springboot】读取外部的配置文件 一、使用场景二、代码实现&#xff08;一&#xff09;application.yml 的配置&#xff08;二&#xff09;编辑 customer.yml&#xff08;三&#xff09;自定义方法读取外部配置文件&#xff08;四&#xff09;使用外部配置文件的配置 一、使用…

解锁 Vue 项目中 TSX 配置与应用简单攻略

在 Vue 项目中配置 TSX 写法 在 Vue 项目中使用 TSX 可以为我们带来更灵活、高效的开发体验&#xff0c;特别是在处理复杂组件逻辑和动态渲染时。以下是详细的配置步骤&#xff1a; 一、安装相关依赖 首先&#xff0c;我们需要在命令行中输入以下命令来安装 vitejs/plugin-v…

游戏引擎学习第22天

移除 DllMain() 并成功重新编译 以下是对内容的详细复述与总结&#xff1a; 问题和解决方案&#xff1a; 在编译过程中遇到了一些问题&#xff0c;特别是如何告知编译器不要退出程序&#xff0c;而是继续处理。问题的根源在于编译过程中传递给链接器的参数设置不正确。原本尝试…

【C#设计模式(15)——命令模式(Command Pattern)】

前言 命令模式的关键通过将请求封装成一个对象&#xff0c;使命令的发送者和接收者解耦。这种方式能更方便地添加新的命令&#xff0c;如执行命令的排队、延迟、撤销和重做等操作。 代码 #region 基础的命令模式 //命令&#xff08;抽象类&#xff09; public abstract class …

QT6学习第四天 感受QT的文件编译

QT6学习第四天 感受QT的文件编译 使用纯代码编写程序新建工程 使用其他编辑器纯代码编写程序并在命令行运行使用 .ui 表单文件生成界面使用自定义 C 窗口类使用现成的QT Designer界面类 使用纯代码编写程序 我们知道QT Creator中可以用拖拽的方式在 .ui 文件上布局&#xff0c…

【SpringBoot】28 API接口防刷(Redis + 拦截器)

Gitee仓库 https://gitee.com/Lin_DH/system 介绍 常用的 API 安全措施包括&#xff1a;防火墙、验证码、鉴权、IP限制、数据加密、限流、监控、网关等&#xff0c;以确保接口的安全性。 常见措施 1&#xff09;防火墙 防火墙是网络安全中最基本的安全设备之一&#xff0c…

4——单页面应用程序,vue-cli脚手架

单页面应用程序(英文名:Single Page Application)简称 SPA,顾名 思义,指的是一个 Web 网站中只有唯一的一个 HTML 页面,所有的功能与交互都在这唯一的一个页面内完成。 1、脚手架 ① 什么是脚手架 vue-cli 是 Vue.js 开发的标准工具&#xff61;它简化了程序员基于 webpack …

小程序 - 个人简历

为了让招聘人员快速地认识自己&#xff0c;可以做一个“个人简历”微信小程序&#xff0c; 展示自己的个人信息。 下面将对“个人简历”微信小程序进行详细讲解。 目录 个人简历 创建图片目录 页面开发 index.wxml index.wxss 功能实现截图 总结 个人简历 创建图片目录…

BUUCTF—Reverse—helloword(6)

一道安卓逆向的签到题 下载附件 使用JADX-gui反编译工具打开&#xff08;注意配环境&#xff09;&#xff0c;找到主函数 jadx 本身就是一个开源项目&#xff0c;源代码已经在 Github 上开源了 官方地址&#xff1a;GitHub - skylot/jadx: Dex to Java decompiler 发现flag …

单点登录深入详解之设计方案总结

基于cookie的单点登录解决方案 概述 用户登录之后 , 将认证信息存储至 Cookie &#xff0c;当再次访问本服务或者访问其他应用服务时&#xff0c;直接从 Cookie 中传递认证信息&#xff0c;进行鉴权处理。 问题 1. 如何保障Cookie内用户认证信息的安全性? 第一, Cookie…

JSONArray 与Object 之间的转换

PageResult<JSONArray> pageResult new PageResult<>();// 查出来的数据 JSONArray resultArray new JSONArray(); ject data new JSONObject();data.put("code", code); resultArray.add(data);// 将resultArray数据放入JSONArray,不是再包装成一个 …

cangjie (仓颉) vscode环境搭建

sdk下载 下载中心-仓颉编程语言官网 可选择半年更新版&#xff0c;不用申请。目前版本&#xff1a;0.53.13 &#xff0c;选择不同平台压缩包下载解压到任意位置即可 补充下载&#xff0c;vscode插件解压后&#xff0c;在vscode扩展中选择从vsix安装&#xff0c;安装后新增名为…

SmartSQL:一款方便、快捷的数据库文档查询、导出工具

&#x1f6a9; 项目介绍 SmartSQL 是一款方便、快捷的数据库文档查询、导出工具&#xff01;从最初仅支持SqlServer数据库、CHM文档格式开始&#xff0c;通过不断地探索开发、集思广益和不断改进&#xff0c;又陆续支持Word、Excel、PDF、Html、Xml、Json、MarkDown等文档格式…

IT监控 | Oracle云监控全解析

Oracle云(Oracle Cloud)是Oracle公司提供的云服务平台&#xff0c;涵盖了IaaS、PaaS、SaaS和DaaS&#xff0c;支持企业在云中构建、部署、集成和扩展应用&#xff0c;为企业提供了管理服务器、应用程序、存储、网络和数据中心的全面控制能力。 跟踪Oracle云基础设施的关键组件将…

攻防世界-web ics-06 [解法思路]

进入环境 点击左边的列表只有报表中心有反应 注意看url直接就是index.php?id1 我先试了sqlmap不行&#xff0c;然后就沉淀了一下 想到了id后面的参数问题&#xff0c;我谁便改了几个数都没反应 就想着用bp抓包爆一下这个参数&#xff0c;用了一个数字10000的字典 发现2333…

zotero安卓测试版下载和使用

2023年年底&#xff0c;Zotero官方就已经推出了安卓版的测试版Zotero for Android (beta),&#xff0c;但名额有限且只能通过Google商店下载。此外&#xff0c;还有一些第三方开发的安卓应用&#xff0c;如Zoo for Zotero、ZotDroid等。 在首次使用Zotero安卓版时&#xff0c;用…

洛谷 P1722 矩阵 II C语言 记忆化搜索

题目&#xff1a; https://www.luogu.com.cn/problem/P1722 我们按照案例画一下 我们会发现&#xff0c;会出现重复的子结构。 代码如下&#xff1a; #include<iostream> using namespace std; int mem[300][300]; int n; int f[305][305]; int dfs(int x,int red,…

MCU(一) 时钟详解 —— 以 GD32E103 时钟树结构为例

微控制器 (MCU) 的时钟系统是系统运行的核心&#xff0c;它提供了各模块所需的时钟信号。本文以 GD32E103 系列 MCU 为例&#xff0c;详细讲解其 时钟树结构&#xff08;Clock Tree&#xff09;。通过理解时钟源、分配与预分频器设置&#xff0c;可以灵活配置系统时钟以实现高性…

[HarmonyOS] 解决HMRouter路由地址无法抽取的问题

解决HMRouter路由地址无法抽取的问题 背景 最近开始学习HarmonyOS开发&#xff0c;搭建项目的时候采用了 HMRouter 路由框架&#xff0c;在项目里使用到路由跳转&#xff0c;官方链接在这&#xff1a; https://gitee.com/hadss/hmrouter/blob/master/HMRouterLibrary/README…

转录组数据挖掘(生物技能树)(第11节)下游分析

转录组数据挖掘&#xff08;生物技能树&#xff09;&#xff08;第11节&#xff09; 文章目录 R语言复习转录组数据差异分析差异分析的输入数据操作过程示例一&#xff1a;示例二&#xff1a;示例三&#xff1a;此代码只适用于人的样本 R语言复习 #### 读取 ####dat read.deli…