Что Cypher script для удаления node по ID?

В SQL:

Delete From Person Where ID = 1;

В Cypher, что script, чтобы удалить node по ID?

(Отредактировано: ID = Neo4j внутренний node ID)

Ответы

Ответ 1

Предполагая, что вы ссылаетесь на внутренний Neo4j node id:

MATCH (p:Person) where ID(p)=1
OPTIONAL MATCH (p)-[r]-() //drops p relations
DELETE r,p

Если вы ссылаетесь на свой собственный идентификатор 'id' на node:

 MATCH (p:Person {id:1})
 OPTIONAL MATCH (p)-[r]-() //drops p relations
 DELETE r,p

Ответ 3

Когда node является сиротой.

Start n=node(1)
Delete n;

Ответ 4

Следуя ссылке, предоставленной @saad-khan, здесь приведен пример получения идентификаторов узлов и отношений. В приведенном ниже коде показаны идентификаторы, поэтому вы можете убедиться, что вы удаляете все, что связано с данным идентификатором.

MATCH (node)-[relation:HAS]->(value) where ID(node)=1234 RETURN ID(instance), ID(value), ID(r)

Ps.: ": HAS" - пример отношения.

Ответ 5

Старый вопрос и ответ, но чтобы удалить узел, когда у него есть отношения, используйте DETACH

MATCH (n) where ID(n)=<your_id> 
DETACH DELETE n

или иначе вы получите это:

Neo.ClientError.Schema.ConstraintValidationFailed: Cannot delete node<21>, because it still has relationships. To delete this node, you must first delete its relationships.

Это как SQL CASCADE