首页 > 解决方案 > 使用调用 apoc.refactor.cloneNodesWithRelationships 后无法保留关系方向

问题描述

我正在使用 neo4j 社区版 3.0.6 和 apoc 3.0.8.6。我遇到了这个问题,我试图复制一个已经有多个关系的节点。然后,当我使用 call apoc.refactor.cloneNodesWithRelationships([node1,node2,...​]) 时,节点及其关系被复制。但是关系方向是错误的。附上下面的图片。正如您在图像中看到的,AB 之间的关系方向是错误的。似乎在那里创建的所有关系都被视为外向关系。这是 apoc 3.0.8.6 上的一个错误,还是有任何关于这个问题的解决方案?

谢谢 在此处输入图像描述

标签: neo4jneo4j-apoc

解决方案


关于这个问题的更新。抱歉,只是发现这是我的查询错误。我确实使用了这样的查询。

MATCH (p:A)-[r1:A_has_B]->(l:B) 
WHERE p.id IN {0} WITH COLLECT(l) as oldBList 
CALL apoc.refactor.cloneNodesWithRelationships(oldBList) YIELD output 
CALL apoc.create.uuid() YIELD uuid SET output.id = uuid 
WITH COLLECT(output.id) as copiedIds
MATCH (l2:B)-[r1]-() 
WHERE l2.id IN copiedIdsAND r1.id IS NOT NULL 
CALL apoc.create.uuid() YIELD uuid 
SET r1.id = uuid 
WITH copiedIds as copiedIds
UNWIND(copiedIds) as result
RETURN result

显然,我有一个案例,与具有 r.id 的 B 没有任何关系,因此 copyIds 不知何故没有返回到结果查询中。使它看起来像交易问题。

感谢所有帮助


推荐阅读