如何在Cypher中删除大量节点

4
我正在尝试使用web admin(即localhost:7474 / browser)在cyphper中一次查询删除100万个节点。
这些节点标记为User。 我运行了以下查询,然后在等待约1分钟后返回未知错误。
match (u:User) delete u

每次运行这个查询都会返回未知错误。我确认我的电脑资源没有问题。我使用的是Neo4j版本2.0.0 RC1社区版,并且Neo4j托管在本地。
请问我删除节点的方式有问题吗?
谢谢

3个回答

6

您应该使用合理的事务大小(约为10-50k原子操作)进行写操作。因此,您可以使用 limit 并运行语句直到所有用户都离开:

match (u:User) with u limit 1000 delete u

1
谢谢您的建议。我尝试删除上面的查询,但是出现了未知错误。我执行了以下查询: match (u:User) with u limit 1000 delete u 它运行得很好 :) 谢谢 - Michael

4

使用Neo4j 3.x及更高版本,您也可以使用APOC运行大型删除事务:

call apoc.periodic.iterate("MATCH (u:User) return u", "DETACH DELETE u", {batchSize:1000})
yield batches, total return batches, total

-2

我发现只需删除neo4j/data文件夹是最快的删除数据库的方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接