问题描述
(a)-[b:Input]->(c:Data)-[e:Output]->(f)
我想用与来自 c 的标签的关系替换 b,c,e:
(a)-[n:Data]->(f)
标签应该是自动生成的。我有多个 c 标签,例如:Data、AMC、Door、New_HS 等。 所以新创建的关系的标签应该是这样创建的:
[n:title = c.Label]
解决方法
我们不能基于属性创建关系。您需要创建一个新关系并将类型(或关系名称)更改为您的数据标签名称。我使用 apoc 函数来更改(或更新)它。我所做的是
- 查找附加到数据的所有节点和关系
- 创建所需的关系,但使用虚拟关系类型:REL
- 使用 apoc 函数 apoc.refactor.setType 将关系类型从 REL 改为 c.label
- 不要忘记删除虚拟关系 REL
Match (a)-[:Input]->(c:Data)-[:Output]->(f)
CREATE (a)-[r:REL]->(f)
WITH a,r,c,f
CALL apoc.refactor.setType(r,c.label)
YIELD input,output
WITH a,f
MATCH (a)-[rel:REL]->(f)
DELETE rel
RETURN a,f
之后: