Как УДАЛИТЬ узлы или отношения со свойствами NULL в neo4j 2.0 с шифром

Я создал несколько узлов и отношений внутри них. Но при этом что-то случилось не так. Я хочу удалить все узлы, имеющие "SGS", кроме узла с идентификатором 2.

Ниже приведен скрипт, который я запустил для создания узла и отношений:

(Пожалуйста, также предложите, как отредактировать этот, если это возможно)

Я пробовал DELETE (вместе с match, where, IS NULL и т. Д.) Несколькими различными методами проб и ошибок, но не смог добиться того же. Пожалуйста помоги.

3 ответа

Решение

Похоже, что все ваши узлы имеют имя, кроме узла, который вы хотите удалить. Так что вы можете попробовать

match n
WHERE NOT (HAS (n.name)) //find all nodes with no name property
with n
match n-[r]-() //find all nodes connected to that node
delete r,n //delete its relations and then the node itself

(примечание не проверено)

Похоже, что в приведенной выше инструкции create вы используете (rkn) вместо (rk), а также, вероятно, (reply) вместо чего-то еще. Поэтому (rkn)-[:READ]->(bk1) просто создаст узел без свойств для представления rkn и отношения READ к OneNight@CallCenter. Вы просто должны проверить и исправить это.

Например, все отношения относятся к узлу с именем (rkn), поэтому я переименовал узел rk в вашем операторе create в rkn. Также убедитесь, что каждый узел, на который вы ссылаетесь в ваших отношениях, действительно отображается на узел в вашем операторе create.

ПРИМЕЧАНИЕ: HAS больше не поддерживается в Cypher, используйте вместо этого EXISTS!

Этот работал для меня

match (n) WHERE NOT (EXISTS (n.name)) DETACH DELETE n

Ничто из вышеперечисленного в настоящее время не будет работать в шифровании.

Попробуйте зашифровать запрос ниже. Это работает:

//находим все узлы без свойства name.

СОВПАДЕНИЕ (n) ГДЕ НЕ ((n.name)НЕ NULL)

//отсоединяем все его связи и удаляем найденный узел, т.е. пустой узел.

ОТДЕЛИТЬ УДАЛИТЬ n

Другие вопросы по тегам