Поскольку вы не знаете, сколько общих ресурсов существует из сообщений удаленного пользователя, вероятно, лучше всего выполнить их групповую модификацию с последующим групповым удалением.Для этого мы можем использовать apoc.periodic.iterate () из процедур APOC.
CALL apoc.periodic.iterate("
MATCH (d:Doctor {name:${nameToDelete})-[:FEED_ITEM]->()-[:NEXT*0..]->(feedItem)
OPTIONAL MATCH (feedItem)<-[:ORIGIN]-(share)
RETURN feedItem, share",
"SET share.status = 'deleted'
WITH DISTINCT feedItem
DETACH DELETE feedItem", {}) YIELD batches, total, errorMessages
RETURN batches, total, errorMessages
При этом используется значение по умолчанию batchSize, равное 10 тыс. Записей за раз (потоковое из внешнего запроса, затем внутренний запрос применяется кпакет)
Либо в том же запросе (после вызова процедуры), либо в отдельном, вы можете выполнить УДАЛЕНИЕ СООТВЕТСТВИЯ и УДАЛЕНИЯ доктора для удаления.
Neo4j не позволяетвисячие отношения, все связи узла должны быть удалены, прежде чем узел может быть удален, и DETACH DELETE используется для удаления как отношений узла, так и самого узла одновременно.