Neo4j/Cypher 删除节点和有关系的子节点



我想从此图中删除具有子节点(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就可以了。

最新更新