如何将Neo4j中ID为1的节点的关系复制到ID为2的节点?
如何复制Neo4j节点的所有关系到另一个节点?
我正在使用最新版Neo4j,想要将ID为1的节点的所有关系复制到ID为2的节点,编写的Cypher语句如下:
MATCH (n)-[r]->(m) WHERE id(n) = 1 WITH r, m MATCH (synonym) WHERE id(synonym) = 2 CREATE (synonym)-[???]->(m)
请问如何获取关系(r)的名称来替换语句中的???标记?
已解决方案
在Ashish Gupta的帮助下,问题已解决,最终可用的Cypher语句如下:
MATCH (n)-[r]->(m) WHERE id(n) = 1 WITH type(r) AS relType, m MATCH (synonym) WHERE id(synonym) = 2 CALL apoc.create.relationship(synonym, relType, {}, m) YIELD rel
关键说明:
- 用
type(r)函数可直接获取关系r的类型名称,将其赋值给relType变量 - 由于Cypher原生
CREATE语句不支持动态指定关系类型,需借助Neo4j的APOC扩展库中的apoc.create.relationship过程实现动态创建,该过程接受目标节点、关系类型、关系属性(示例中{}表示无属性)和关联节点作为参数
内容的提问来源于stack exchange,提问作者KhacNha
相关产品推荐
相关产品推荐

