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



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

[更新]

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

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

    此查询收集具有相同地址的所有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);
    

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

最新更新