【问题标题】:Delete all nodes and relationships in neo4j 1.8删除 neo4j 1.8 中的所有节点和关系
【发布时间】:2012-12-24 12:37:02
【问题描述】:

我知道这个问题已经被很多人问过了
对于我的研究,这是之前提出的一些问题

  1. How to delete all relationships in neo4j graph?
  2. https://groups.google.com/forum/#!topic/neo4j/lgIaESPgUgE

但终究还是解决不了我们的问题,
我们只想删除“ALL”节点和“ALL”关系

假设删除“ALL”可以看到还剩下0个节点0个属性和0个关系

这是我执行论坛建议的删除“ALL”后的截图

我的问题还是一样,如何删除neo4j中的所有节点和所有关系

【问题讨论】:

    标签: neo4j nosql relationship


    【解决方案1】:

    您可能做对了,只有仪表板只显示较高的 ID,因此“活动”节点的数量,关系,虽然没有。它只是提供信息。

    要确保您有一个空图表,请运行以下命令:

    START n=node(*) return count(n);
    START r=rel(*) return count(r);
    

    如果两者都给你0,你的删除是成功的。

    【讨论】:

    • 是的,这是真的,但仪表板既没有显示更高的 ID,也没有显示最高的 ID
    • 是的,他们就是这样编程的——因为当你有一个拥有数十亿节点的集群时,你不想手动计算它们。但在某处我看到有人对此进行了更深入的研究并进行了某种 javascript 修复,也许如果你幸运的话,你会在谷歌上搜索帖子。
    【解决方案2】:

    从 2.3.0 到 3.3.0

    MATCH (n)
    DETACH DELETE n
    

    Docs

    2.3.0 之前的版本

    MATCH (n)
    OPTIONAL MATCH (n)-[r]-()
    DELETE n,r
    

    Docs

    【讨论】:

    • Neo4j 文档中的这个示例虽然说:“这个查询不是用于删除大量数据,但在处理小型示例数据集时很好用。”。想知道最好先做 MATCH ()-[r]-() DELETE r 然后再做 MATCH (n) DELETE n
    • @GeorgeBirbilis,为了对大量数据执行此操作,必须将操作分解为多个事务,并且必须实施重试机制。
    • 不确定是否需要重试,但对于迭代方式,请参阅 Stefan Armbruster 在stackoverflow.com/questions/29711757/… 的回复(我还在我的博客文章链接末尾提到它,我在单独的答案)
    • 2.3 answer-query 对我不起作用。 @GeorgeBirbilis 的建议可以。
    • @aliteralmind 从neo4j.com/docs/2.3.0/query-delete.html 判断,问题可能在于)之后需要换行符或至少一个空格字符,因为目前它写...)DETACH看起来像一个错字(而且也许将 DETACH DELETE 保持在同一行,但不确定是否需要这样做)。请注意,文章仍然说“此查询不适用于删除大量数据,但在处理小型示例数据集时非常有用。”
    【解决方案3】:

    它会做的伎俩..

    Match (n)-[r]-()
    Delete n,r;
    

    【讨论】:

    • @TomRedfern 更短! XD
    • 这不会删除没有关系的节点,不像接受的答案
    【解决方案4】:

    对于大型数据库,您应该从磁盘中删除数据库(我猜是在您首先停止引擎之后)或在 Cypher 中使用类似的东西:

    MATCH (n)
    OPTIONAL MATCH (n)-[r]-()
    WITH n,r LIMIT 50000
    DELETE n,r
    RETURN count(n) as deletedNodesCount
    

    请参阅https://zoomicon.wordpress.com/2015/04/18/howto-delete-all-nodes-and-relationships-from-neo4j-graph-database/ 了解我从各种答案中收集到的更多信息

    【讨论】:

      【解决方案5】:

      Neo4j 不能删除有关系的节点。您必须先删除关系,然后才能删除节点。

      但是,使用简单的 chyper 删除“ALL”节点和“ALL”关系是一种简单的方法。 这是代码:

      匹配 (n) 分离删除 n

      --> DETACH DELETE 将通过匹配删除所有节点和关系

      【讨论】:

        【解决方案6】:

        如果节点的名称是例如:abcd 那么下面的查询将起作用:

        MATCH (n:abcd)
        DETACH DELETE n
        

        这只会删除标签为“abcd”的节点及其所有关系。

        【讨论】:

          【解决方案7】:

          您可能想要删除约束和索引

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-01-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多