DELETE
DELETE
子句用于删除节点、关系或路径。
有关删除属性和标签的信息,请参阅REMOVE 子句。
如果不也删除连接到它们的关联关系,则无法删除节点。这可以通过显式删除特定关联关系或使用DETACH DELETE
子句来完成。
虽然DELETE 子句使已删除的对象不再可访问,但已删除的节点和关联关系占用的空间仍保留在磁盘上,并为将来创建数据的交易保留。 |
示例图
下图用于下面的示例。它显示了四位演员,其中三位ACTED_IN
电影The Matrix
(Keanu Reeves
、Carrie-Anne Moss
和Laurence Fishburne
),还有一位演员没有参演(Tom Hanks
)。
要重新创建该图,请在空的 Neo4j 数据库中运行以下查询
CREATE
(keanu:Person {name: 'Keanu Reever'}),
(laurence:Person {name: 'Laurence Fishburne'}),
(carrie:Person {name: 'Carrie-Anne Moss'}),
(tom:Person {name: 'Tom Hanks'}),
(theMatrix:Movie {title: 'The Matrix'}),
(keanu)-[:ACTED_IN]->(theMatrix),
(laurence)-[:ACTED_IN]->(theMatrix),
(carrie)-[:ACTED_IN]->(theMatrix)
删除单个节点
要删除单个节点,请使用DELETE
子句
查询
MATCH (n:Person {name: 'Tom Hanks'})
DELETE n
这将删除Person
节点Tom Hanks
。此查询只能在没有连接任何关联关系的节点上运行。
结果
Deleted 1 node
仅删除关联关系
可以删除关联关系,同时使连接到该关联关系的节点不受影响。
查询
MATCH (n:Person {name: 'Laurence Fishburne'})-[r:ACTED_IN]->()
DELETE r
这将删除Person
节点Laurence Fishburne
的所有传出ACTED_IN
关联关系,而不会删除该节点。
结果
Deleted 1 relationship
删除节点及其所有关联关系
要删除节点和连接到它们的任何关联关系,请使用DETACH DELETE
子句。
查询
MATCH (n:Person {name: 'Carrie-Anne Moss'})
DETACH DELETE n
这将删除Person
节点Carrie-Anne Moss
及其连接的所有关联关系。
结果
Deleted 1 node, deleted 1 relationship
对于具有受限安全权限的用户,可能不允许使用 |
删除所有节点和关联关系
可以删除图中的所有节点和关联关系。
查询
MATCH (n)
DETACH DELETE n
结果
Deleted 3 nodes, deleted 1 relationship
|