我想从此图中删除具有子节点(65、66、67)和关系的节点 (64):图形图像
start n=node(64)
match (e)-[r]->(n)
match (n)-[r2*]->(e2)
delete r
foreach (rel in r2| delete rel)
DELETE n, e2
获取异常:
javax.transaction.HeuristicRollbackException: Failed to commit transaction Transaction(1336, owner:"qtp1613738960-605")[STATUS_NO_TRANSACTION,Resources=1], transaction rolled back ---> Node record Node[66,used=false,rel=141,prop=-1,labels=Inline(0x0:[]),light] still has relationships
如何更改查询来修复它?
我不是密码专家,但您只能删除没有关系的节点,并且您的异常清楚地表明节点 66 仍然有关系。问题是,您不会删除 65、66、67 上的传入关系(来自左侧的关系)。
我会尝试这样的事情:
START n=node(64) /*Select start node*/
MATCH ()-[r1]->(n) /*Select all incoming relationships for start node*/
MATCH (n)-[*]->(o) /*Select "outgoing" nodes at any depth*/
MATCH ()-[r2]->(o) /*Select all incoming relationships for "o", ie node 65,66,67*/
DELETE r1,r2,n,o
顺便说一下,如果您只想删除节点/关系的集合,则不需要使用foreach
。一个简单的delete
就可以了。