我试图删除整个子图,使用以下查询:
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个建议:
- 在
MATCH
子句中指定关系方向性,否则您可能最终不仅删除开始节点的后代,而且删除其所有祖先 !此外,这可能是删除失败的原因——一些祖先节点可能具有您的查询没有尝试删除的其他关系。 - 你应该能够简化你的查询。
试试这个:
MATCH (:StartNode {id:'id1'})-[r*1..6]->(m)
FOREACH(rel in r | DELETE rel)
DELETE m;