如何解决使用定期迭代删除无法正常工作
我正在使用此查询删除许多节点,并且在4.0.0中可以正常工作,但是使用4.1.1似乎不起作用
CALL apoc.periodic.iterate('
MATCH (s:Thing{id:$thingId})
CALL apoc.path.subgraphNodes(s,{}) YIELD node
RETURN node','DETACH DELETE node',{batchSize:2000,iterateList:true,parallel:false,params: { thingId: $idOfThingToDelete}}) YIELD total,batches,errorMessages
RETURN total
以下内容有误
无法调用过程
apoc.periodic.iterate
:原因: org.neo4j.graphdb.NotFoundException:找不到节点78063
然后在日志中进一步查找
无法调用过程
apoc.periodic.iterate
:原因: java.lang.IllegalStateException:不属于链条! RelationshipTraversalCursor [id = 64250,打开状态为: densityNode = false,next = 64250,mode = regular,基础 record = Relationship [64250,used = true,source = 86327,target = 86330,type = 7,sPrev = 64238,sNext = -1,tCount = 1,tNext = -1,prop = 478773,secondaryUnitId = -1,!首先, tFirst]]
我可以看到ID为78063的节点,它看起来很好,所以我不明白为什么它说找不到它。
任何帮助表示感谢,谢谢!
更新
这是我尝试的第二个查询,使用了不同的查询,但仍然给我一个未找到节点12345 错误
CALL apoc.periodic.iterate(
'MATCH (t:Thing{id:$thingId})
CALL apoc.path.subgraphNodes(s,{}) YIELD node
RETURN DISTINCT node','DETACH DELETE n',errorMessages
RETURN total
解决方法
apoc.path.subgraphNodes
过程可以多次返回同一节点,因此应使用RETURN DISTINCT node
以确保每个节点仅返回一次。
例如:
CALL apoc.periodic.iterate(
'MATCH (s:Thing{id:$thingId})
CALL apoc.path.subgraphNodes(s,{}) YIELD node
RETURN DISTINCT node','DETACH DELETE node',{batchSize:2000,iterateList:true,parallel:false,params: {thingId: $idOfThingToDelete}}) YIELD total,batches,errorMessages
RETURN total
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。