Neo4j删除标签中的所有节点及其关系
问题描述:
我知道这个问题已被问了很多次,但答案并没有解决我的问题。 我想删除标签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
但我再次得到了同样的错误。 如何删除标签中的所有节点及其关系而不超过垃圾回收器开销限制?
答
您可能想要利用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工作。
这解决了我的问题,谢谢:) – Porjaz