Я хочу удалить связанный граф, связанный с определенным узлом в базе данных Neo4j, используя Cypher. Вариант использования - удалить узел «start» и все узлы, где существует путь к стартовому узлу. Чтобы ограничить транзакцию, запрос должен быть итеративным и не должен отключать подключенный график.Удалить связанный граф с Cypher
До сих пор я не я использую этот запрос:
OPTIONAL MATCH (start {indexed_prop: $PARAM})--(toDelete)
OPTIONAL MATCH (toDelete)--(toBind)
WHERE NOT(id(start) = id(toBind)) AND NOT((start)--(toBind))
WITH start, collect(toBind) AS TO_BIND, toDelete limit 10000
DETACH DELETE toDelete
WITH start, TO_BIND
UNWIND TO_BIND AS b
CREATE (start)-[:HasToDelete]->(b)
И называют его до тех пор, пока узел удален равно 0.
Есть ли лучший запрос для этого?
Я полагаю, вы пробовали путь переменной длины ко всем подключенным узлам и DETACH DELETE каждого подключенного узла? Это взорвает вашу кучу? – InverseFalcon
Да, но проблема в том, что запрос не работает на большом графике, вызывающий запрос несколько раз может сломать связанный граф. – cde