Neo4j 什么';是按ID删除节点的密码脚本吗?

Neo4j 什么';是按ID删除节点的密码脚本吗?,neo4j,nosql,cypher,graph-databases,Neo4j,Nosql,Cypher,Graph Databases,在SQL中: 从ID=1的人员中删除 在Cypher中,按ID删除节点的脚本是什么 (编辑:ID=Neo4j的内部节点ID)假设您指的是Neo4j的内部节点ID: MATCH (p:Person) where ID(p)=1 OPTIONAL MATCH (p)-[r]-() //drops p's relations DELETE r,p 如果您在节点上引用自己的属性“id”: MATCH (p:Person {id:1}) OPTIONAL MATCH (p)-[r]-() //dro

在SQL中:

从ID=1的人员中删除

在Cypher中,按ID删除节点的脚本是什么


(编辑:ID=Neo4j的内部节点ID)

假设您指的是Neo4j的内部节点ID:

MATCH (p:Person) where ID(p)=1
OPTIONAL MATCH (p)-[r]-() //drops p's relations
DELETE r,p
如果您在节点上引用自己的属性“id”:

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

当节点是孤立节点时

Start n=node(1)
Delete n;

id为“x”的节点的最干净扫描为

匹配(n),其中id(n)=x
分离删除n


根据@saad khan提供的链接,下面是一个获取节点和关系ID的示例。 下面的代码显示了ID,因此您可以确保删除了与给定ID相关的所有内容

匹配(节点)-[关系:HAS]->(值)
其中ID(节点)=1234
返回ID(实例)、ID(值)、ID(r)


备注:“:HAS”是关系的一个示例。

旧问题和答案,但要在节点有关系时删除节点,请使用
分离

MATCH (n) where ID(n)=<your_id> 
DETACH DELETE n
匹配(n),其中ID(n)=
分离删除n
否则你会得到这个:

Neo.ClientError.Schema.ConstraintValidationFailed: Cannot delete node<21>, because it still has relationships. To delete this node, you must first delete its relationships.
Neo.ClientError.Schema.ConstraintValidationFailed:无法删除节点,因为它仍然具有关系。要删除此节点,必须先删除其关系。

这就像SQL的
CASCADE

您可以使用DETACH DELETE而不是可选的匹配在这种情况下“Person”是什么?它是“name”属性吗?仅当您不想删除()中的内容时,此选项才起作用。