我试图在删除(n)
之前将节点(n)
的所有向内关系复制到另一个节点(m)
(这两个女巫我知道ID),但我无法想出码。 这些关系可能存在也可能不存在。Neo4j Cypher:复制关系和删除节点
任何人的摘要?
我试图在删除(n)
之前将节点(n)
的所有向内关系复制到另一个节点(m)
(这两个女巫我知道ID),但我无法想出码。 这些关系可能存在也可能不存在。Neo4j Cypher:复制关系和删除节点
任何人的摘要?
您无法从关系集合内动态创建关系类型。
假设即使我们收集所有传入的关系如下
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
))
在情况下,如果你的关系类型是不同的,那么你可以参考此变通手法:here。您可以从控制台进行查询,将所有startnode,endnode,relationshiptype信息作为csv下载到Excel表单中。然后运行密码脚本从中运行。
其他方式是你可以使用java api查询neo4j,然后存储所有的关系和节点,相应地构建你的查询并重新启动。
假设所有传入关系都是相同的类型说'富'。然后,你可以做短以下查询:
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)
避免了双重的foreach
这是整齐的感谢!仍然DELETE问题仍然存在,即:如果我之后尝试运行DELETE查询但之前未找到任何关系,查询是否会失败? – Sovos
Neo4j api doc表示没有任何关系挂起。因此,只要你删除一个节点,所有与它对应的关系也应该被删除 –
当我试图删除一个有关系的节点,它给了我一个错误。我必须删除节点和关系才能成功。假定我们知道关系类型,你看到有任何方法可以在一个查询中完成它吗? – Sovos