从开始节点删除整个子图-子图是一个连接的组件



我试图删除整个子图,使用以下查询:

match 
(n:StartNode {id:'id1'})-[r*1..6]-(m) 
foreach(rel in r|delete rel) with n, collect(distinct m) as del_nodes2
foreach(node in del_nodes2|delete node);

子图中的所有分量都是连通的。开始节点确实存在。最大链长为6。然而,我得到以下错误:

javax.transaction.HeuristicRollbackException: Failed to commit transaction Transaction(6, owner:"qtp1905632138-213")[STATUS_NO_TRANSACTION,Resources=1], transaction rolled back ---> javax.transaction.xa.XAException

2个建议:

  1. MATCH子句中指定关系方向性,否则您可能最终不仅删除开始节点的后代,而且删除其所有祖先 !此外,这可能是删除失败的原因——一些祖先节点可能具有您的查询没有尝试删除的其他关系。
  2. 你应该能够简化你的查询。

试试这个:

MATCH (:StartNode {id:'id1'})-[r*1..6]->(m)
FOREACH(rel in r | DELETE rel)
DELETE m;

相关内容

最新更新