首页 > 解决方案 > 尝试使用 apoc.periodic.iterate 批量删除重复节点。服务器一直超时

问题描述

我正在尝试批量删除重复节点。但是,我不断收到错误Connection to server lost. Reconnecting...服务器似乎正在断开连接然后重新连接。我正在尝试对Post具有相同共享属性的所有节点类型进行重复数据删除unique_post_id。关于如何进行这种重复数据删除的任何想法?

call apoc.periodic.iterate('
MATCH (p:Post)
WITH p.unique_post_id as id, collect(p) AS nodes 
WHERE size(nodes) >  1
FOREACH (p in tail(nodes) | DETACH DELETE p) ','', {batchSize:100000})

标签: neo4jcypher

解决方案


您使用的过程不正确。您的第一个参数apoc.periodic.iterate应该是一个 Cypher 查询,该查询返回要删除的节点流,您的第二个参数应该是一个查询以分离删除这些节点。

试试这个:

call apoc.periodic.iterate(
  'MATCH (p:Post)
   WITH p.unique_post_id as id, collect(p) AS nodes 
   WHERE size(nodes) > 1
   UNWIND tail(nodes) AS node
   RETURN node',
  'DETACH DELETE node',
  {batchSize:100000, iterateList:true})

如果这仍然失败,请尝试减小batchSize.


推荐阅读