删除neo4j中的重复节点及其关系

cam*_*ge 2 neo4j cypher

密码查询 MATCH(n:BusinessBranch) RETURN n返回所有节点,我想根据属性删除重复节点及其关系address。我怎么做?

cyb*_*sam 11

[更新]

  1. 要删除共享相同属性值的所有 BusinessBranch节点address(这也需要删除它们的所有关系):

    MATCH (b:BusinessBranch)
    WITH b.address AS address, COLLECT(b) AS branches
    WHERE SIZE(branches) > 1
    FOREACH (n IN branches | DETACH DELETE n);
    
    Run Code Online (Sandbox Code Playgroud)

    此查询收集所有BusinessBranch具有相同地址的节点,过滤器具有多个分支的集合,然后使用DETACH DELETE中所产生的集合中的所有分支(这将删除分支它们之间的关系)。

  2. 要删除除一个重复节点之外的所有节点,您可以执行以下操作:

    MATCH (b:BusinessBranch)
    WITH b.address AS address, COLLECT(b) AS branches
    WHERE SIZE(branches) > 1
    FOREACH (n IN TAIL(branches) | DETACH DELETE n);
    
    Run Code Online (Sandbox Code Playgroud)

    但是,在这种情况下,您应该首先查看 APOC 过程apoc.refactor.mergeNodes,它更适合大多数用例。