Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j 使用定期迭代删除不起作用_Neo4j_Neo4j Apoc - Fatal编程技术网

Neo4j 使用定期迭代删除不起作用

Neo4j 使用定期迭代删除不起作用,neo4j,neo4j-apoc,Neo4j,Neo4j Apoc,我用这个查询删除了很多节点,在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: { thi

我用这个查询删除了很多节点,在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
它的错误如下

调用过程失败。周期性。迭代:由以下原因引起: org.neo4j.graphdb.NotFoundException:未找到节点78063

然后再往下看,我们得到了这个

调用过程失败。周期性。迭代:由以下原因引起: java.lang.IllegalStateException:不是链的一部分! RelationshipTraversalCursor[id=64250,打开状态为: denseNode=false,next=64250,mode=regular,底层 记录=关系[64250,used=true,source=86327,target=86330,type=7,sPrev=64238,sNext=-1,tCount=1,tNext=-1,prop=478773,secondaryUnitId=-1,!sFirst, t第一]]

我可以看到id为78063的节点,它看起来很好,所以我不明白为什么它说找不到它

感谢您的帮助,谢谢

更新

这是我尝试的第二个查询,它使用distinct,但它仍然给我一个节点12345 not found错误


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

嘿,谢谢你的回复!我们加入了这个更改,它似乎在4.0.0上非常适合我们,但尽管它似乎在4.1.1上减少了内存使用(可能),但它仍然给我们带来了“未找到节点”错误。我们返回的是节点Id distinct,而不是节点本身(将distinct Id(节点)返回为nodeId)。这可能是问题的一部分吗?我会尽快(希望在接下来的一两个小时内),再次感谢。不幸的是,同样的问题,使用这个查询(下面)实际上,将新查询作为对我的原始问题的更新发布,以了解格式原因增加批量大小有帮助,但由于数据量较大,我们只需不断提高值,否则在从Neo4j 3.5迁移到4.2.6(均为企业版)后,我会遇到相同的问题我们还有一个现象
java.lang.IllegalStateException:不是链的一部分在未更改的代码中。同样,对于我们来说,在
apoc.periodic.iterate
片段、
DISTINCT
或堆大小扩展中,它将被缩小到
apoc.path.subgraphNodes
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