Neo4j: реализация мягкого удаления с необязательными отношениями

Я пытаюсь реализовать мягкое удаление в Neo4j. График, описанный в Cypher от АлисыТочка зрения такова:

(clyde:User)(bob:User)

Вместо того, чтобы фактически удалить узел и его отношения, я

изменив метку так, чтобы ее больше нельзя было искать напрямую, т.е.User пометить и добавить_User этикетка (обратите внимание на подчеркивание)заменить его отношения, чтобы он могбольше не будет достигнуто моими обычными запросами, например удаляя его:FOLLOWS отношения и замена его:_FOLLOWS отношения.

Так что это в основном эквивалент перемещения строки в таблицу архивации в реляционной базе данных. Я подумал, что это довольно эффективный подход, потому что выэффективно никогда не посещать части графика, которые были удалены из памяти. Кроме того, вы неЯ должен изменить любой из ваших существующих запросов.

Результат мягкого удаления Алисы должен быть следующим:

(clyde:User)(bob:User)

Моя первая попытка запроса была такой:

match (user:User {Id: 1})
optional match (user)-[follows:FOLLOWS]->(subject)
remove user:User set user:_User
delete follows
create (user)-[:_FOLLOWS]->(subject);

Проблема в том, что когда этот пользователь никого не преследует, запрос пытается создать связь междуuser а такжеnull потому что второе совпадение не является обязательным, поэтому оно дает мне эту ошибку:Other node is null.

Моя вторая попытка была такой:

match (user:User {Id: 1})
remove user:User set user:_User
optional match (user)-[follows:FOLLOWS]->(subject)
foreach (f in filter(f in collect({r: follows, n: subject}) where f.r is not null) | delete f.r create (user)-[:_FOLLOWS]->(f.n));

Так что я'm помещая отношения и предмет в карту, собирая эти карты в коллекцию, бросая каждыйпустой» карта прочь и перебирая коллекцию. Но этот запрос дает мне эту ошибку:

SyntaxException: Invalid input '.': expected an identifier character, node labels, a property map, whitespace or ')' (line 1, column 238)

Кто-нибудь знает, как я могу это исправить?

Спасибо Ян

Ответы на вопрос(1)

Ваш ответ на вопрос