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 语言的具体实现、支持程度以及语法细节等方面可能会存在一定差异,实际使用时需要结合具体的数据库平台来准确应用这些功能和指令。
相关文章:
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…...
linux安全管理-防火墙配置
1. 开启系统防火墙 1、检查内容 检查操作系统是否开启防火墙; 2、配置要求 操作系统开启防火墙; 3、配置方法 systemctl status firewalld ##查看系统防火墙运行状态 systemctl start firewalld ##启动防火墙 systemctl restart firewalld ##重启防火墙…...
什么是BIOS
BIOS(Basic Input/Output System,基本输入输出系统)是计算机启动过程中的一个关键组件,主要负责硬件的初始化和系统的引导。以下是关于 BIOS 的一些详细信息: 1. 基本功能 硬件初始化:当计算机启动时&…...
c++视频图像处理
打开视频或摄像头 打开指定视频 /*VideoCapture(const String &filename, apiPreference);filename:读取的视频或者图像序列的名称apiPreference:读取数据时设置的属性*/ VideoCapture video; //定义一个空的视频对象 video.open("H:/BaiduNetdiskDownlo…...
音视频入门基础:MPEG2-TS专题(8)——TS Header中的适配域
注:本文有部分内容引用了维基百科:https://zh.wikipedia.org/wiki/MPEG2-TS 一、引言 当TS Header中的adaptation_field_control属性的值为10或11 时,TS Header包含adaptation field(适配域): 根据《T-RE…...
基于stm32单片机的教室节能系统设计
功能描述 0. STM32F103C8T6单片机为控制核心 1. OLED液晶显示当前年 月 日 时 分 秒 星期 2. 按键可以设置定时时间 3. 按键可以设置用电开关的开启和关闭时间,实现设备的节能 4. 通过红外遥控可以打开关闭空调设备(通过继电器开关闭合模拟&#x…...
mini主机通过内网穿透做成服务器
文章目录 简介1.ubuntu 的ssh server 安装2.ubuntu 的docker 安装3.ubuntu的curl的安装4.ubuntu的frp客户端安装5.ubuntu的docker compose安装6.声明 简介 主要目的 本地设备做成服务器,实现ssh远程登录以及内网穿透设备总成本1千多元(其实部分设备可以…...
智能桥梁安全运行监测系统守护桥梁安全卫士
一、方案背景 桥梁作为交通基础设施中不可或缺的重要组成部分,其安全稳定的运行直接关联到广大人民群众的生命财产安全以及整个社会的稳定与和谐。桥梁不仅是连接两地的通道,更是经济发展和社会进步的重要纽带。为了确保桥梁的安全运行,桥梁安…...
Selenium和Pyppeteer有什么区别?
Selenium和Pyppeteer都是自动化测试工具,它们可以模拟用户在浏览器中的操作,但它们之间存在一些关键的区别: Selenium 跨浏览器支持:Selenium支持多种浏览器,包括Chrome、Firefox、Internet Explorer等,而…...
82从零开始学Java之异常处理机制简介
作者:孙玉昌,昵称【一一哥】,另外【壹壹哥】也是我哦 CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言 大家可以想一个问题,有没有谁能够做到开发项目时一个错误都不发生?如果谁能够做到这一点,那他可能真的是“天才”!但实际上,任何人都不可能在项目开发…...
Git上传本地项目到远程仓库(gitee/github)
目录 序言一、创建git本地版本库二、连接远程仓库(以gitee为例)三、将项目提交到git(本地)版本库1.由工作区添加到暂存区2.由暂存区添加到版本库 四、将代码由本地仓库上传到 gitee远程仓库1.获取远程库与本地同步2.把当前分支 ma…...
华为仓颉编程环境搭建
1、仓颉介绍 摘自华为官方:仓颉编程语言作为一款面向全场景应用开发的现代编程语言,通过现代语言特性的集成、全方位的编译优化和运行时实现、以及开箱即用的 IDE 工具链支持,为开发者打造友好开发体验和卓越程序性能。 其具体特性表现为&am…...
UE5 Line Trace By Channel(通道线条追踪)节点
在 Unreal Engine 5 (UE5) 中,Line Trace By Channel 是一个常用于进行物理射线检测(raycasting)的节点。它会沿着一条从起点到终点的直线发射一条射线,并检测射线与世界中任何物体的碰撞。这个节点广泛应用于枪械射击、检测物体、…...
DroneCAN 最新开发进展,Andrew在Ardupilot开发者大会2024的演讲
本文是Andrew演讲的中文翻译,你可以直接观看视频了解演讲的全部内容,此演讲视频的中文版本已经发布在Ardupilot社区的Blog板块,你可以在 Arudpilot官网(https://ardupilot.org) 获取该视频: 你也可以直接通过Bilibili链…...
UDP客户端服务器通信
在这篇博客中,我们将探索 UDP(用户数据报协议) 通信,简要地说,UDP 是一种无连接、快速但不可靠的通信协议,适用于需要快速数据传输但对丢包容忍的场景,比如视频流和在线游戏。就像《我是如此相信…...
适合中小型公司的自动化测试的测试框架,OpenSourceTest
适合中小型公司的自动化测试的测试框架,OpenSourceTest 文档地址: http://docs.opensourcetest.cn/代码仓库: https://github.com/chineseluo/opensourcetest安装方式: pip3 install opensourcetest -i https://pypi.tuna.tsin…...
实现跨语言通信:Rust 和 Thrift 的最佳实践
前言 在分布式系统中,服务之间高效且安全的通信至关重要。Apache Thrift 是一个被广泛应用的跨语言 RPC(远程过程调用)框架,它支持多种编程语言,包括 Rust。Rust 以其卓越的性能和内存安全保障,成为越来越…...
js判断空对象
1. 使用 Object.keys() 方法 Object.keys(obj) 方法返回一个包含对象可枚举属性名称的数组。如果返回的数组长度为 0,表示对象为空。 const isEmpty (obj) > Object.keys(obj).length 0;// 示例 const emptyObject {}; const nonEmptyObject { key: value …...
visionpro官方示例分析(一) 模板匹配工具 缺陷检测工具
1.需求:找出图像中的这个图形。 2.步骤 使用CogPMAlignTool工具,该工具是模板匹配工具,见名知意,所谓模板匹配工具就是说先使用该工具对一张图像建立模板,然后用这个模板在其他图像上进行匹配,匹配上了就说…...
PyCharm中Python项目打包并运行到服务器的简明指南
目录 一、准备工作 二、创建并设置Python项目 创建新项目 配置项目依赖 安装PyInstaller 三、打包项目 打包为可执行文件 另一种打包方式(使用setup.py) 四、配置服务器环境 五、上传可执行文件到服务器 六、在服务器上运行项目 配置SSH解释…...
cocos creator 3.8 合成大西瓜Demo 11
界面上的Node节点: 背景 警戒线 三面墙 初始位置节点 水果容器 先分组吧,墙 地板 水果 创建预制体 先挂一个脚本 刚体碰撞器先弄上再说 import { _decorator, Component, Node } from cc; const { ccclass, property } _decorator;ccclass(FruitData) e…...
Vue前端开发-动态插槽
不仅父组件可以通过插槽方式访问并控制子组件传入的数据,而且可以控制传入父组件时插槽的名称,从而使不同的插槽根据名称的不同,使用场景也不同,例如在一个小区详细页中,可以根据小区类型,调用不同名称的详…...
使用easyexcel导出复杂模板,同时使用bean,map,list填充
背景 在使用easyexcel导出时,如果遇到一个模板中同时存在 一部分是实体类中的字段,另外部分是列表的字段,需要特殊处理一下,比如下面的模板: 这里面 user, addr 是实体类(或者map)…...
最大值(Java Python JS C++ C )
题目描述 给定一组整数(非负),重排顺序后输出一个最大的整数。 示例1 输入:[10,9] 输出:910 说明:输出结果可能非常大,所以你需要返回一个字符串而不是整数。 输入描述 数字组合 输出描述 最大的整数 示例1 输入 10 9输出 910解题思路 题目要求 是:给定一…...
17.5k Star,ThingsBoard 一款开源、免费、功能全面的物联网 IoT 平台 -慧知开源充电桩平台
项目介绍 ThingsBoard是一个开源、免费、功能全面、灵活易用的物联网(IoT)平台,专注于数据收集、处理、可视化以及设备管理。它提供了一个全面的解决方案,用于构建和管理物联网应用。支持从各种设备收集数据,通过内置…...
《C++ 与神经网络:自动微分在反向传播中的高效实现之道》
在深度学习蓬勃发展的今天,神经网络成为了众多领域的核心技术驱动力。而反向传播算法作为训练神经网络的关键手段,其背后的自动微分技术的高效实现尤为重要,特别是在 C 这样追求性能与内存控制极致的编程语言环境下。 神经网络通过大量的参数…...
【CSS】设置文本超出N行省略
文章目录 基本使用 这种方法主要是针对Webkit浏览器,因此可能在一些非Chrome浏览器中不适用。 基本使用 例如:设置文本超出两行显示省略号。 核心代码: .ellipsis-multiline {display: -webkit-box; -webkit-box-orient: vertical; /* 设置…...
open-instruct - 训练开放式指令跟随语言模型
文章目录 关于 open-instruct设置训练微调偏好调整RLVR 污染检查开发中仓库结构 致谢 关于 open-instruct github : https://github.com/allenai/open-instruct 这个仓库是我们对在公共数据集上对流行的预训练语言模型进行指令微调的开放努力。我们发布这个仓库,并…...
DI依赖注入详解
DI依赖注入 声明了一个成员变量(对象)之后,在该对象上面加上注解AutoWired注解,那么在程序运行时,该对象自动在IOC容器中寻找对应的bean对象,并且将其赋值给成员变量,完成依赖注入。 AutoWire…...
TDengine在debian安装
参考官网文档: 官网安装文档链接 从列表中下载获得 Deb 安装包; TDengine-server-3.3.4.3-Linux-x64.deb (61 M) 进入到安装包所在目录,执行如下的安装命令: sudo dpkg -i TDengine-server-<version>-Linux-x64.debNOTE 当…...
网站空间数据库需要多大/厦门网站搜索引擎优化
Trie 定义: Trie (字典树)是一种用于实现字符串快速检索的多叉树结构。Trie的每个节点都拥有若于个字符指针,若在插入或检索字符串时扫描到一个字符c, 就沿着当前节点的C字符指针,走向该指针指向的节点。 初始化 一棵空Trie仅包含一个根节点…...
专门做企业名录的网站/西安优化排名推广
原标题:Unity编辑器中使用GitHub管理项目Git作为代码协作工具已帮助了成千上万的开发者,但对于游戏开发来说还是稍有不便。最近GitHub官方推出了GitHub for Unity扩展工具,该工具对程序员及设计师均适用,Unity游戏开发者可以更好地…...
wish跨境电商平台/seopc流量排行榜企业
方法一 通常使用socket.gethostname()方法即可获取本机IP地址,但有时候获取不到(比如没有正确设置主机名称) import socket#获取计算机名称hostnamesocket.gethostname()#获取本机IPipsocket.gethostbyname(hostname)print(ip) 方法二&#x…...
网上哪个网站做的系统好用吗/百度一下你就知道手机版
一、事务的传播行为 1.介绍 当事务方法被另一个事务方法调用时,必须指定事务应该如何传播。例如:方法可能继续在现有事务中运行,也可能开启一个新事务,并在自己的事务中运行。 2.属性 事务的传播行为可以由传播属性指定。Spri…...
景德镇建站公司/百度系app有哪些
我用git的目的主要是为了数据的完整性,信息不丢失,虽然repository的代码服务器和本地都会存一份,但有时候自己的小片段代码很多(比如github的gist),不可能每天都用得到,需要定期的备份ÿ…...
织梦 网站版权信息/网络推广员为什么做不长
使用Python和支持向量回归在本文中,我将向您展示如何使用称为支持向量回归(SVR)的机器学习算法创建自己的股票预测Python程序。在这个程序中,我将使用Facebook(FB)股票数据,并根据数据预测某天的…...