Я использую этот запрос для удаления большого количества узлов, и он отлично работает в 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, открытое состояние с: плотный узел = ложь, следующий = 64250, режим = обычный, базовая запись = отношение [64250, используется = истина, источник = 86327, цель = 86330, тип = 7, sPrev = 64238, sNext =-1,tCount=1,tNext=-1,prop=478773,secondaryUnitId=-1,!sFirst, tFirst]]
Я вижу узел с идентификатором 78063, и он выглядит нормально, поэтому я не понимаю, почему он говорит, что не может его найти.
Любая помощь приветствуется, спасибо!
Обновить
Это второй запрос, который я пробовал, в котором используется различное, но он по-прежнему выдает ошибку Узел 12345 не найден.
CALL apoc.periodic.iterate(
'MATCH (t:Thing{id:$thingId})
CALL apoc.path.subgraphNodes(s, {}) YIELD node
RETURN DISTINCT node',
'DETACH DELETE n',
{batchSize:2000, iterateList:true, parallel:false, params: { thingId: $idOfThingToDelete}}) YIELD total, batches, errorMessages
RETURN total
java.lang.IllegalStateException: NOT PART OF CHAIN!
в неизменном коде. Также у нас это должно быть сужено доapoc.path.subgraphNodes
во фрагментеapoc.periodic.iterate
, расширение размераDISTINCT
или кучи, к сожалению, не помогает. - person ThirstForKnowledge   schedule 23.05.2021