2016-11-17 168 views
0

我知道这个问题已被问了很多次,但答案并没有解决我的问题。 我想删除标签TelephoneNumber中的所有节点及其关系(百万)。 我已经试过第一次删除的关系是这样的:Neo4j删除标签中的所有节点及其关系

MATCH (:Person)-[r:HAS_TELEPHONE_NUMBER]->(:TelephoneNumber) 
DELETE r 

但一定时间后,我得到一个错误GC overhead limit exceeded。我试图限制这样的查询:

MATCH (:Person)-[r:HAS_TELEPHONE_NUMBER]->(:TelephoneNumber) 
WITH r LIMIT 100 
DELETE r 

但我得到同样的错误。 我曾尝试另一种方式:

MATCH (t:TelephoneNumber) OPTIONAL MATCH (t)-[r]-() 
DELETE t,r 

但我再次得到了同样的错误。 如何删除标签中的所有节点及其关系而不超过垃圾回收器开销限制?

回答

0

您可能想要利用APOC程序apoc.periodic.commit()。另外,由于您想要删除节点,因此DETACH DELETE将有所帮助,因为这会删除节点中的所有关系,然后删除节点本身。

使用的一个例子可能是:

call apoc.periodic.commit(" 
match (tel:TelephoneNumber) 
with tel limit {limit} 
detach delete tel 
return count(*) 
",{limit:10000}) 

您可以调整批量大小限制为必要的,但通常10000工作。

+0

这解决了我的问题,谢谢:) – Porjaz

相关问题