REMOVE
语句详解REMOVE
语句?REMOVE
语句用于删除节点的标签或属性,删除关系的属性,但不会删除节点或关系本身。
REMOVE
的基本语法REMOVE variable:Label
REMOVE variable.property
REMOVE
删除节点的标签MATCH (n:Person {name: 'Alice'})
REMOVE n:Person
RETURN n
MATCH
匹配 Alice
的 Person
节点。REMOVE n:Person
删除 Person
标签。Alice
节点仍然存在,只是 Person
标签被移除。MATCH (n:Person:Employee {name: 'Alice'})
REMOVE n:Person:Employee
RETURN n
Alice
节点的 Person
和 Employee
标签。MATCH (n:Person {name: 'Alice'})
REMOVE n:Manager
RETURN n
Alice
没有 Manager
标签,不会报错,但不会发生任何更改。MATCH (n:Person:Manager {name: 'Alice'})
REMOVE n:Manager
RETURN n
Manager
标签,但 Alice
仍然保留 Person
标签。REMOVE
删除节点或关系的属性MATCH (n:Person {name: 'Alice'})
REMOVE n.age
RETURN n
Alice
节点的 age
属性。MATCH (n:Person {name: 'Alice'})
REMOVE n.age, n.city
RETURN n
Alice
节点的 age
和 city
属性。MATCH (n:Person {name: 'Alice'})
REMOVE n.salary
RETURN n
Alice
没有 salary
属性,不会报错,但不会发生任何更改。MATCH (a:Person {name: 'Alice'})-[r:KNOWS]->(b:Person {name: 'Bob'})
REMOVE r.since
RETURN a, b, r
KNOWS
关系上的 since
属性。since
属性被移除。REMOVE
的高级用法WITH
进行条件删除MATCH (n:Person)
WHERE n.age > 50
WITH n
REMOVE n.age
RETURN n
age > 50
的 Person
节点,然后删除 age
属性。MATCH (n:Person)
WITH n
REMOVE n:Person
RETURN n
Person
节点,并删除 Person
标签。MATCH (n:Person)
WITH n
REMOVE n.age, n.city
RETURN n
Person
节点的 age
和 city
属性。FOREACH
批量移除标签MATCH (n:Person)
FOREACH (x IN labels(n) |
REMOVE n:Person
)
RETURN n
FOREACH
批量删除 Person
标签。MATCH (n:Person {name: 'Alice'})
REMOVE n:Person
RETURN n
Alice
节点只有 Person
一个标签,删除后将变成“无标签节点”。MATCH (n:Person {name: 'Alice'})
REMOVE n:Manager
Alice
没有 Manager
标签,不会报错。REMOVE
只能删除标签或属性,不能删除节点或关系本身。DELETE
或 DETACH DELETE
。REMOVE
与 SET
的区别功能 | REMOVE |
SET |
---|---|---|
删除标签 | REMOVE n:Label |
不支持 |
删除属性 | REMOVE n.property |
SET n.property = NULL |
添加标签 | 不支持 | SET n:Label |
更新属性 | 不支持 | SET n.property = value |
创建属性 | 不支持 | SET n.property = value |
REMOVE
的真实场景MATCH (n:Temporary)
REMOVE n:Temporary
RETURN n
Temporary
节点中移除 Temporary
标签,但不删除节点。MATCH (n:Person)
WHERE n.age < 18
REMOVE n.status
RETURN n
age < 18
的 Person
节点的 status
属性。MATCH (n:Person {name: 'Alice'})
REMOVE n:Employee
SET n:Manager
RETURN n
Alice
节点的标签从 Employee
改为 Manager
。MATCH (n:Log)
WHERE n.createdAt < date('2023-01-01')
REMOVE n.archived
RETURN n
Log
节点中过期的数据属性 archived
。REMOVE
语句用于删除节点的标签或删除节点和关系的属性,不会删除节点或关系本身。REMOVE
可以用于单个或批量移除标签或属性,也可以与 WITH
和 FOREACH
结合使用进行复杂数据处理。SET
语句不同,REMOVE
只删除标签和属性,不能用于添加或更新数据。通过合理使用 REMOVE
,可以有效管理和清理 Neo4j 图数据库中的标签和属性,提高数据一致性和质量。