gpt4 book ai didi

Neo4j:如何删除节点之外的所有节点和关系?

转载 作者:行者123 更新时间:2023-12-02 04:03:35 27 4
gpt4 key购买 nike

这是一个简单的图表:

(:a)-[:r]->(:b)

如果想删除(:b),我可以这样做:

MATCH (a)-[r]->(b :b)
DELETE a, r, b

但是,(b) 可以具有多个关系和来自它的节点(并且这些节点也可以递归地具有更多关系和节点)。像这样的事情:

(:a)-[:r]->(:b)-[:s]->(x)-[:r]->(y)- ... ->(z)

如何递归删除 (b) 之外的每个节点和关系?

最佳答案

DETACH DELETE 在这里会很有用。这首先删除节点中的所有关系,然后删除节点本身。这使您的查询更加容易,因为您所需要的只是查询可从 b 节点访问的所有节点。

我暂时假设您问题中的这个 b 节点是一个特定节点,而不是带有标签 :b 的每个节点。我确实鼓励您重新阅读有关变量和标签的开发人员文档,因为我猜这里有些困惑。

因此,假设有一个特定的 b 节点,并假设它具有区分它的名称属性,您可以使用此查询来删除它以及连接到它并可从它访问的整个子图。

MATCH (b:b)-[*0..]-(x)
WHERE b.name = 'b'
WITH DISTINCT x
DETACH DELETE x

请注意,因为我们不关心关系类型,并且因为我们指定了 0 个或多个关系,所以无论有多少个关系,x 都将匹配 b 及其整个连通子图。分离并删除x将删除子图中的所有关系,然后删除子图中的所有节点。

关于Neo4j:如何删除节点之外的所有节点和关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40694257/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com