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

时间:2014-05-23 10:23:17

标签: 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.HeuristicRollbackException: Failed to commit transaction Transaction(6, owner:"qtp1905632138-213")[STATUS_NO_TRANSACTION,Resources=1], transaction rolled back ---> javax.transaction.xa.XAException

1 个答案:

答案 0 :(得分:1)

2条建议:

  1. MATCH子句中指定关系方向性,否则您最终不仅会删除起始节点的后代,还会删除其所有祖先!此外,这可能是您的删除失败的原因 - 某些祖先节点可能具有您的查询不会尝试删除的其他关系。
  2. 您应该能够简化查询。
  3. 试试这个:

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