【问题标题】:cypher: merge two nodes with same attributes and different relationshipscypher:合并两个具有相同属性和不同关系的节点
【发布时间】:2019-07-29 09:18:03
【问题描述】:

可以说,我有两个具有相同标签和相同属性值的节点:

Create (n:A {foo: 'bar'});
Create (m:A {foo: 'bar'});

我还有一些其他的节点:

Create(o:B {test: 'test'});
Create(p:C {other: 'other'});

我有从第一个节点到其他节点的关系:

Match (n:A {foo: 'bar'}), (o:B {test: 'test'}) MERGE (n)-[:r]-(o);
Match (m:A {foo: 'bar'}), (p:C {other: 'other'}) MERGE (m)-[:s]-(p);

所以我得到了如图所示的图表:

现在我想将 A 类型的两个节点合并为一个节点并保持这两种关系。所以我想得到一个类似如图所示的图表:

是否有密码查询来执行此操作?尤其是对具有相同属性属性的一种类型的所有节点执行此操作?

【问题讨论】:

    标签: neo4j cypher


    【解决方案1】:

    我们在 APOC 中有一个程序可以做到这一点:apoc.refactor.mergeNodes

    这是文档的链接:https://neo4j-contrib.github.io/neo4j-apoc-procedures/#merge-nodes

    以及您示例的解决方案:

    MATCH (n:A {foo: 'bar'})
    WITH collect(n) AS nodes
      CALL apoc.refactor.mergeNodes(nodes, {properties:"override", mergeRels:true}) yield node
      RETURN node
    

    【讨论】:

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