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

Neo4j 从开始节点删除整个子图-子图是连接的组件,neo4j,cypher,Neo4j,Cypher,我正在尝试使用以下查询删除整个子图: 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.HeuristicRol

我正在尝试使用以下查询删除整个子图:

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;