我试图在删除(n)
之前将节点(m)
的所有内向关系复制到另一个节点(n)
(我都知道ID),但我不能拿出代码。 关系可能存在也可能不存在。
任何人的片段?
答案 0 :(得分:2)
您无法从关系集合中动态创建关系类型。
假设我们收集所有传入的关系,如下所示
START n=node(id1) MATCH n<-[r]-() WITH collect(r) as rels ...
您可以遍历集合rels,但不会能够在下面执行
CREATE (n)-[rels[i]]->(m)
假设所有传入的关系都是相同的类型,请说'foo'。然后你可以做到以下几点。
START n=node(id1),m=node(id2)
MATCH n<-[r:foo]-(p)
WITH collect(p) as endNodes,m
FOREACH(i in range(0,length(endNodes)-1) | foreach(a in [endNodes[i]] |
create m<-[:foo]-a
))
如果您的relationshipTypes不同,那么您可以参考此变通方法技术:here。您可以从控制台查询,将所有startnode,endnode,relationshiptype info作为csv下载到excel表中。然后运行cypher脚本从中运行。
其他方式是你可以使用java api查询neo4j,然后存储所有关系和节点,相应地构建你的查询并再次激活。
答案 1 :(得分:0)
假设所有传入的关系都是相同的类型,请说'foo'。然后你可以做更短的查询:
START n=node(id1),m=node(id2)
MATCH n<-[r:foo]-(p)
WITH collect(p) as endNodes,m
FOREACH(mm in endNodes | CREATE m-[:foo]->mm)
这避免了双重预告