Neo4j常用的语句记录

news/2025/9/23 9:36:53/文章来源:https://www.cnblogs.com/T-Ajie/p/19106604

1. 核心概念:节点、关系、属性

在开始学习语句之前,先理解三个核心概念:

  • 节点:表示实体(如人、电影、产品)。用圆括号表示:()
    • (p:Person):一个带有标签 Person 的节点,变量名为 p
  • 关系:表示节点之间的连接。用方括号表示:[]。关系总是有方向的(--><--)。
    • [r:LIKES]:一个类型为 LIKES 的关系,变量名为 r
  • 属性:键值对,用于存储节点或关系的详细信息。用大括号表示:{}
    • {name: 'Tom Hanks', born: 1956}

2. 增(CREATE)

用于创建新的节点和关系。

a) 创建节点

// 创建一个带有 Person 标签的节点,并设置 name 和 born 属性
CREATE (p:Person {name: 'Tom Hanks', born: 1956})// 创建多个节点
CREATE (p1:Person {name: 'Alice'}), (p2:Person {name: 'Bob'})

b) 创建关系
需要先找到已存在的节点,然后在它们之间创建关系。

// 先找到两个节点,然后创建关系
MATCH (a:Person {name: 'Tom Hanks'}), (m:Movie {title: 'Forrest Gump'})
CREATE (a)-[r:ACTED_IN {roles: ['Forrest']}]->(m)
// 这里 r 是关系变量,ACTED_IN 是关系类型,roles 是关系的属性。

更常用的方法是 MERGE(见下文第5点),它可以避免创建重复数据。


3. 查(MATCH)

用于查询图中的数据。这是最常用的语句,通常与 WHERE 子句和 RETURN 子句一起使用。

a) 查找所有节点

// 查找所有节点(谨慎使用,数据量大时很慢)
MATCH (n) RETURN n

b) 根据标签查找节点

// 查找所有 Person 节点
MATCH (p:Person) RETURN p// 查找特定属性的节点 (方式一:直接在模式中指定)
MATCH (p:Person {name: 'Tom Hanks'}) RETURN p// 查找特定属性的节点 (方式二:使用 WHERE 子句)
MATCH (p:Person)
WHERE p.name = 'Tom Hanks' AND p.born > 1950
RETURN p

c) 查找关系(路径)

// 查找 Tom Hanks 演过的所有电影
MATCH (p:Person {name: 'Tom Hanks'})-[:ACTED_IN]->(movie:Movie)
RETURN p, movie// 查找谁导演了 'Forrest Gump' 这部电影
MATCH (director:Person)-[:DIRECTED]->(m:Movie {title: 'Forrest Gump'})
RETURN director.name

d) 可变长度路径

// 查找 Tom Hanks 的 1到3度好友(朋友的朋友的朋友)
MATCH (p:Person {name: 'Tom Hanks'})-[:FRIENDS_WITH*1..3]-(friend)
RETURN friend.name

4. 改(SET, REMOVE)

用于更新节点或关系的属性。

a) SET:设置或更新属性

// 为某个节点添加或修改属性
MATCH (p:Person {name: 'Tom Hanks'})
SET p.country = 'USA', p.awards = 100
RETURN p

b) REMOVE:移除属性或标签

// 移除一个属性
MATCH (p:Person {name: 'Tom Hanks'})
REMOVE p.awards
RETURN p// 移除一个标签(注意:不是删除节点)
MATCH (p:Person {name: 'Tom Hanks'})
REMOVE p:OldLabel

5. 删(DELETE)

用于删除节点和关系。

重要:删除节点前,必须先删除其所有关系。

a) 删除关系

// 删除 Tom Hanks 和某部电影之间的 ACTED_IN 关系
MATCH (p:Person {name: 'Tom Hanks'})-[r:ACTED_IN]->(m:Movie {title: 'A Movie'})
DELETE r

b) 删除节点(及其所有关系)

// 先删除关系,再删除节点
MATCH (p:Person {name: 'Someone'})-[r]-() // 匹配该节点的所有进出关系
DELETE r, p// 更简洁的方式:使用 DETACH DELETE(强制删除节点及其所有关系)
MATCH (p:Person {name: 'Someone'})
DETACH DELETE p

6. 高级且实用的语句

a) MERGE
“有则返回,无则创建”。它确保了图数据库中的唯一性,是 CREATE 的更安全版本。

// 如果不存在名为 ‘Tom Hanks’ 的 Person 节点,则创建它;如果存在,则只是匹配到它。
MERGE (p:Person {name: 'Tom Hanks'})
ON CREATE SET p.created = timestamp() // 仅在创建时执行
ON MATCH SET p.lastSeen = timestamp()  // 仅在匹配时执行
RETURN p

b) WITH
将查询的一部分结果传递到下一部分,类似于管道。常用于聚合后过滤。

// 查找出演电影超过 5 部的演员
MATCH (p:Person)-[:ACTED_IN]->(m:Movie)
WITH p, count(m) AS movieCount // 将演员和其电影计数传递下去
WHERE movieCount > 5
RETURN p.name, movieCount
ORDER BY movieCount DESC

c) UNION
合并两个查询的结果集(字段必须一致)。

// 查找所有演员和导演的名字
MATCH (p:Person)-[:ACTED_IN]->(:Movie)
RETURN p.name AS name, 'Actor' AS roleUNIONMATCH (p:Person)-[:DIRECTED]->(:Movie)
RETURN p.name AS name, 'Director' AS role

7. 常用函数和子句

  • RETURN:指定返回什么。
  • WHERE:过滤条件。
  • ORDER BY:排序。ORDER BY p.name DESC
  • LIMIT / SKIP:分页。RETURN ... LIMIT 10 SKIP 20
  • COUNT(), SUM(), AVG():聚合函数。
  • DISTINCT:去重。RETURN DISTINCT p.name
  • COLLECT():将值收集到列表中。RETURN p.name, COLLECT(m.title) AS movies

总结

语句 关键字 用途
创建 CREATE, MERGE 添加新数据
查询 MATCH, WHERE, RETURN 读取数据,这是核心
更新 SET, REMOVE 修改现有数据
删除 DELETE, DETACH DELETE 删除数据
高级操作 WITH, UNION 构建复杂查询

最佳实践建议

  1. 总是先用 MATCH 查询确认要操作的数据,再执行写操作(CREATE, SET, DELETE)。
  2. 优先使用 MERGE 而不是 CREATE 来避免创建重复数据。
  3. 使用 DETACH DELETE 删除节点时要非常小心,因为它会同时删除所有关系。
  4. 利用 PROFILEEXPLAIN 前缀来分析查询性能。

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

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

相关文章

wordpress数据库导入放心网站推广优化咨询

时序分解 | MATLAB实现CEEMDANSE自适应经验模态分解样本熵计算 目录 时序分解 | MATLAB实现CEEMDANSE自适应经验模态分解样本熵计算效果一览基本介绍程序设计参考资料 效果一览 基本介绍 MATLAB实现CEEMDANSE自适应经验模态分解样本熵计算 包括频谱图 附赠案例数据 可直接运行 …

Model Context Protocol (MCP) 完整协议流程详解

1. 概述 Model Context Protocol (MCP) 是一种标准化协议,允许应用程序向AI助手提供上下文信息,包括工具、资源和提示等。该协议基于JSON-RPC 2.0规范,支持双向通信。 2. MCP连接建立流程 2.1 初始连接 sequenceDia…

Java中 String、StringBuilder 和 StringBuffer 的区别? - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

常用的 HTTP 请求方法和区别

常用的 HTTP 请求方法最核心和常用的方法有以下几个:GET用途:请求指定的资源。只用于获取数据,不应产生任何“副作用”(如修改数据)。特点:请求的参数直接附加在 URL 后面(查询字符串 Query String),有长度限…

什么叫网站优化怎么用vs做网站开发

背景 美团点评作为全球最大的生活服务平台&#xff0c;承接超过千万的POI&#xff0c;服务于数量庞大的活跃用户。在海量数据的前提下&#xff0c;定位运营业务、准确找到需要数据的位置&#xff0c;并快速提供正确、一致、易读的数据就变得异常困难&#xff0c;这些困难主要体…

网站左侧导航栏设计交换链接是什么意思

目录 什么是渗透测试 渗透测试的重要性 渗透测试的前置技能 开始入门学习路线 什么是渗透测试 渗透测试&#xff0c;通常被视为模拟黑客的一种安全评估行为&#xff0c;其目的在于全面挖掘目标网站或主机的潜在安全漏洞。与真实的黑客攻击不同&#xff0c;渗透测试旨在发现…

个人建网站做站长手机做免费个人网站

目录 前言1. mysql.connector2. pymysql 前言 连接Mysql一般有几种方法&#xff0c;主要讲解mysql.connector以及pymysql的连接 后续如果用到其他库还会持续总结&#xff01; 对于数据库中的表格,本人设计如下:(为了配合下面的操作) 1. mysql.connector mysql.connector 是一…

网站cms模板那些网站可以做行测题

随着城市建设的不断发展和交通运输的快速增长&#xff0c;渣土车作为建筑行业中不可或缺的运输工具&#xff0c;承担着大量的渣土运输任务。然而&#xff0c;由于渣土车在运输过程中存在超速、违规变道、碾压行人等交通安全问题&#xff0c;给道路交通和行人安全带来了严重的隐…

网站容易出现的问题什么叫网站前台

一、session 1、客户端发送请求&#xff0c;服务器将登录信息存储在 Session 中&#xff0c;Session 依赖于 Cookie&#xff08;cookie指的就是在浏览器里面存储的一种数据&#xff0c;仅仅是浏览器实现的一种数据存储功能。Cookie实际上是一小段的文本信息。&#xff09;&…

高平网站建设沉默是金什么意思

目录 引言 1 FastSAM介绍 1.1 FastSAM诞生 1.2 模型算法 1.3 实验结果 2 FastSAM运行环境构建 2.1 conda环境构建 2.2 运行环境安装 2.3 模型下载 3 FastSAM运行 3.1 命令行运行 3.1.1 Everything mode 3.1.2 Text prompt 3.1.3 Box prompt (xywh) 3.1.4 Points p…

网站运营推广主要做什么的泰安房产网站

目的 Redis和Msql来保持数据同步&#xff0c;并且强一致&#xff0c;以此来提高对应接口的响应速度&#xff0c;刚开始考虑是用mybatis的二级缓存&#xff0c;发现坑不少&#xff0c;于是决定自己搞 要关注的问题点 操作数据必须是唯一索引 如果更新数据不是唯一索引&#…

jquery网站开发查找网站域名

概要介绍 时间序列数据是一种表示物理设备&#xff0c;系统、应用过程或行为随时间变化的数据&#xff0c;广泛应用于物联网&#xff0c;工业物联网&#xff0c;基础运维系统等场景。阿里云TSDB 时间序列数据库可以解决大规模时序数据的可靠写入&#xff0c;降低数据存储成本&…

建设监理继续教育网站响应式网站手机端

近日&#xff0c;浙江智臾科技有限公司&#xff08;以下简称“智臾科技”&#xff09;正式签署 CLA 贡献者许可协议&#xff0c;加入龙蜥社区&#xff08;OpenAnolis&#xff09;。 智臾科技主创团队从 2012 年开始投入研发 DolphinDB。DolphinDB 作为一款基于高性能时序数据库…

网站如何改版厦门手机网站建设

一. 六大日志 慢查询日志:记录所有执行时间超过long_query_time的查询&#xff0c;方便定位并优化。 # 查询当前慢查询日志状态 SHOW VARIABLES LIKE slow_query_log; #启用慢查询日志 SET GLOBAL slow_query_log ON; #设置慢查询文件位置 SET GLOBAL slow_query_log_file …

建设网站包维护粤嵌培训4个月收费

好 接下来 我们讲一个对开发非常重要的东西 热部署 因为 我们在开发过程中总会希望快点看到效果 或者 你的企业项目一般很大很复杂&#xff0c;重启是一件非常麻烦的事 或者你在和前端同事联调&#xff0c;有一点小问题 你改完就要重启 前端还得等你&#xff0c;非常不友好 那…

网站图标素材图片深圳响应式设计企业网站

这篇文章主要是为了记录一下操作&#xff0c;这个假期又要给这套RAC扩容磁盘。 我这套Solaris的小机我还不总操作这玩意&#xff0c;和LINUX有点小差别&#xff0c;整理记录一下&#xff0c;要不每次都是现翻。 存储端划LUN映射到主机 登录到3PAR存储控制台&#xff0c;创建…

免费试用平台网站源码济南做网站优化哪家好

在使用hbase时出错&#xff0c;错误如下图&#xff1a; 错误原因&#xff1a; 返回去检查启动的Hadoop与zookeeper&#xff0c;发现zookeeper的状态不对&#xff0c;重新启动了一下zookeeper&#xff0c;确保所有机器的zookeeper都启动起来了就可以了。

娄底网站推广自己能网站建设

作者主页&#xff1a;Java码库 主营内容&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 技术选型 【后端】&#xff1a;Java 【框架】&#xff1a;ssm 【…

网站运营年度推广方案羊了个羊开发公司

一&#xff0c;什么是JWT JSON Web Token&#xff08;缩写 JWT&#xff09;是目前最流行的跨域认证解决方案 JWT总的来说是用来解决session的共享的问题的 1&#xff0c;JWT的原理 JWT 的原理是&#xff0c;服务器认证以后&#xff0c;生成一个 JSON 对象&#xff0c;发回给…