可以说,我有两个具有相同标签和相同属性值的节点:
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类型的两个节点合并到一个节点,并保持两种关系。所以我想得到一个如图所示的图形:
是否有密码查询可以做到这一点?尤其是要对具有相同属性属性的一种类型的所有节点执行此操作?
答案 0 :(得分: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