清空所有Person、 Movie节点及其所有关系
sql
MATCH (a:Person), (m:Movie)
OPTIONAL MATCH (a)-[r1]-(), (m)-[r2]-()
DELETE a,r1,m,r2
查询任意数据
sql
MATCH (n) RETURN n
如果没有, 就说明已经删除成功了
这段代码是用Cypher查询语言编写的,用于清空所有的Person节点、Movie节点以及它们之间的所有关系。让我们逐步解释代码的每个部分:
sql
MATCH (a:Person), (m:Movie)
这部分代码使用MATCH语句来查找图数据库中的所有Person节点和Movie节点。其中,(a:Person)
表示匹配所有标签为Person的节点,(m:Movie)
表示匹配所有标签为Movie的节点。
sql
OPTIONAL MATCH (a)-[r1]-(), (m)-[r2]-()
这部分代码使用OPTIONAL MATCH语句来查找所有与Person节点和Movie节点相关的关系。其中,(a)-[r1]-()
表示匹配所有与Person节点相关的关系,并将该关系指定为r1。同样,(m)-[r2]-()
表示匹配所有与Movie节点相关的关系,并将该关系指定为r2。这里使用OPTIONAL MATCH而不是普通的MATCH,是为了确保即使没有找到相关的关系,查询仍然会继续执行。
sql
DELETE a,r1,m,r2
这部分代码使用DELETE语句来删除之前匹配到的Person节点、Movie节点以及它们相关的关系r1和r2。通过这个操作,所有的Person节点、Movie节点以及它们之间的关系都会被删除,从而清空整个图数据库。
为什么这么写? 这段代码之所以这样写,是为了清空整个图数据库中的所有数据,包括节点和关系,从而回到一个空白的状态。在某些情况下,比如测试、重置或重新构建数据库时,需要清空数据,以便重新开始。通过MATCH和OPTIONAL MATCH语句,可以找到所有的Person节点和Movie节点,即使它们没有与其他节点相关联,也能够继续执行删除操作,确保所有数据都被清空。同时,使用DELETE语句可以方便地一次性删除多个节点和关系,简化了代码的编写。