Neo4j 入门教程 - 使用 Cypher 删除关系

你可以像删除节点一样删除关系 - 通过匹配你想要删除的关系。

你可以一次性删除一个或多个关系,甚至可以删除数据库中的所有关系。

首先,作为复习,以下是我们之前创建的关系:

我们来删除类型为 RELEASED 的关系。

有几种方法可以解决这个问题,我们来看其中的三种。

下边的语句范围非常广 - 它将删除所有类型为 RELEASED 的关系。

1
2
MATCH ()-[r:RELEASED]-() 
DELETE r

你也可以写的更具体一些,就像这样:

1
2
MATCH (:Artist)-[r:RELEASED]-(:Album) 
DELETE r

上边的语句将匹配所有的 Artist 节点和 Album 节点间具有 RELEASED 的关系。

你甚至可以更具体一些,就像这样:

1
2
MATCH (:Artist {name: "筷子兄弟"})-[r:RELEASED]-(:Album {name: "猛龙过江"}) 
DELETE r

上边的任意一条语句都可以将 RELEASED 关系删掉,图将看起来是这样的:

删除有关联关系的节点

节点存在关系将不能被删除,如果我们尝试执行下边的语句:

1
MATCH (a:Artist {name: "筷子兄弟"}) DELETE a

会看到如下错误:

这是因为节点上有连接的关系。

一种选择是删除所有的关系,然后再删除节点。

另一种选择是使用 DETACH DELETE 子句。DETACH DELETE 子句允许你删除一个节点的同时删除与其相连的所有关系。

所以我们可以将上面的语句改为:

1
MATCH (a:Artist {name: "筷子兄弟"}) DETACH DELETE a

执行这条语句将看到下边的成功消息:

删除整个数据库

你可以进一步使用 DETACH DELETE 并删除整个数据库。

只需将过滤条件去掉就可以删除所有的点和关系了。

继续来执行下边的语句:

1
MATCH (n) DETACH DELETE n

至此,我们的数据库中不再有任何数据。所以这节课就作为我们 Neoj4 入门教程的最后一课吧🙂

如果你有兴趣了解更多关于 Neo4j 的知识,请查看 https://neo4j.com/docs/developer-manual/current/