用一个单一关系替换一个节点到另一个节点的关系

时间:2019-04-17 09:47:12

标签: neo4j cypher

我一直在Neo4j的2个节点之间多次推动相同的关系。 这是一个错误,因为它使可视化效果不太清晰。

现在,我想用一个单一关系替换2个节点之间的那几个关系。如果我们可以在新的唯一关系上将属性内的关系数保持为“计数”,那就太好了。

什么是解决此问题的有效方法? 我有10万个亲戚,我有点担心要花些时间。

这是一个使问题更明确的简单示例: 我有:

Node A -- R1 -- Node B
Node A -- R2 -- Node B

我想拥有

Node A -- R {count : 2} -- Node B

谢谢!

1 个答案:

答案 0 :(得分:2)

我认为这些关系没有任何属性,并且关系的方向也无关紧要。

您可以将这些关系与Cypher Query结合使用,如下所示:

MATCH (p:Node)-[r]-(c:Node)
WHERE ID(p) > ID(c)
DELETE r
WITH p, c, COUNT(r) as count
CREATE (p)-[:R{count:count}]->(c)

如果您只想合并具有相同方向的关系,则可以使用以下查询:

MATCH (p:Node)-[r]->(c:Node)
DELETE r
WITH p, c, COUNT(r) as count
CREATE (p)-[newrel:R{count:count}]->(c)
  

如果您也想合并属性,则可以使用    apoc plugin's apoc.refactor.mergeRelationships方法。

相关问题