Neo4j常见语句-delete

delete用法(DELETE 操作用于移除图数据库中的节点和关系。与其他数据库不同,Neo4j 的删除操作需要考虑节点与关系的依赖关系(不能直接删除有关联关系的节点))

(1)基本语法

bash 复制代码
DELETE <node_or_relationship> [, <node_or_relationship>]...

(2)核心规则:

bash 复制代码
  不能直接删除有关联关系的节点,需先删除关系
  可同时删除多个节点或关系
  支持与 MATCH 结合精准定位删除目标

(3)删除关系

a.删除单个关系

bash 复制代码
// 删除吴京和成龙之间的朋友关系
MATCH (w:Star {name: "吴京"})-[r:friend]-(c:Star {name: "成龙"}) 
DELETE r

b.按类型删除关系

bash 复制代码
// 删除所有"合作"类型的关系
MATCH ()-[r:COOPERATED_WITH]-()
DELETE r

c.删除带条件的关系

bash 复制代码
// 删除2010年前建立的朋友关系
MATCH ()-[r:FRIEND {since: < 2010}]-()
DELETE r

(4)删除节点

a. 删除孤立节点(无关系的节点)

bash 复制代码
// 删除名为"张三"(张三没有任何关系),结果为成功
MATCH (n:Person {name: "张三"})
DELETE n

// 陈奕迅因为和其他人有关系,所以下面语句执行不成功
MATCH (n:Singer {name: "陈奕迅"})
DELETE n

b.先删除关系再删除节点

bash 复制代码
 // 先删除陈奕迅的所有关系,再删除他的节点
MATCH (l:Singer {name: "陈奕迅"})
OPTIONAL MATCH (l)-[r]-()
DELETE r, l

c.批量删除节点(带标签)使用 DETACH DELETE

bash 复制代码
// 删除所有"歌手"类型的节点及其关系
MATCH (n:Singer)
DETACH DELETE n

注意:DETACH DELETE 会递归删除节点的所有入边和出边关系,使用时需谨慎!

(5)与 WHERE 结合精准删除

a.按属性条件删除

bash 复制代码
// 删除年龄大于60岁的演员节点
MATCH (a:Actor {age: > 60})
DETACH DELETE a

b.按关系数量删除

bash 复制代码
// 删除关系数少于3个的用户节点
MATCH (u:User)
WHERE size(()-[]-(u)) < 3
DETACH DELETE u

(6)批量删除操作(性能优化)

分段删除大数量数据

bash 复制代码
// 分批次删除1000个节点,避免内存溢出
MATCH (n:Person)
WITH n LIMIT 1000
DETACH DELETE n
相关推荐
喜欢打篮球的普通人4 天前
MLIR快速入门
neo4j·mlir
ELI_He9994 天前
Neo4j 安装 APOC
neo4j
綮地5 天前
Neo4j 基本处理
neo4j
lzp07915 天前
Neo4j图数据库学习(二)——SpringBoot整合Neo4j
数据库·学习·neo4j
爱折腾的小码农5 天前
neo4j数据库桌面管理工具
数据库·neo4j
Wenhao.9 天前
Docker 安装 neo4j
docker·容器·neo4j
RDCJM10 天前
Neo4j图数据库学习(二)——SpringBoot整合Neo4j
数据库·学习·neo4j
机器不学习我也不学习12 天前
TensorFlow环境安装
neo4j
码农老李13 天前
vxWorks7.0 Simpc运行tensorflow lite example
人工智能·tensorflow·neo4j
小鸡吃米…1 个月前
TensorFlow 实现异或(XOR)运算
人工智能·python·tensorflow·neo4j