如何使用 Neo4j 密码查询删除节点及其连接的节点?
How to delete a node and its connected nodes with Neo4j cypher query?
例如,我想删除 id = "005A" 的 Actor
个节点及其连接的 Movie
个节点。 Actor和Movie节点的关系是ACTED_IN
.
我试过这个密码查询:
MATCH (a:Actor {id: "005A"})
OPTIONAL MATCH (a)-[r:ACTED_IN]->(m)
DELETE a, r, m;
但它没有用,我得到 TransactionFailureException: Unable to commit transaction
错误。
谁能给个解决办法?
更新:
我发现从其他节点 (Agency
) 到标记为 OWNED
的 Actor
节点存在关系。所以图表是这样的:
(aa:Agency)-[o:OWNED]->(a:Actor)
您确定 ID 编码为字符串 属性 吗?我猜电影数据库的 id 是一个整数,因此 id 不应该用引号引起来:
MATCH (a:Actor {id: 5})
OPTIONAL MATCH (a)-[r:ACTED_IN]->(m)
DELETE a, r, m;
[编辑]
您不能删除一个节点,除非它的所有关系也都被删除。在您的情况下,a
and/or m
节点可能具有 r
.
以外的关系
要获取与 a
和 m
关联的关系类型集,您可以使用以下内容(我已将结果限制为 10 行,以防 a
and/or m
有很多关系`):
MATCH (a:Actor {id: "005A"})
OPTIONAL MATCH ()-[rx]-(a)
OPTIONAL MATCH (a)-[r:ACTED_IN]->(m)
OPTIONAL MATCH (m)-[ry]-()
RETURN a, r, m, COLLECT(DISTINCT TYPE(rx)), COLLECT(DISTINCT TYPE(ry))
LIMIT 10;
我怀疑您的结果会显示 ACTED_IN
以外的类型。
以下查询应删除 s/he 出演的演员和所有电影:
MATCH (a:Actor {id: "005A"})
OPTIONAL MATCH ()-[rx]-(a)
OPTIONAL MATCH (a)-[r:ACTED_IN]->(m)
OPTIONAL MATCH (m)-[ry]-()
DELETE rx, ry, r, a, m;
例如,我想删除 id = "005A" 的 Actor
个节点及其连接的 Movie
个节点。 Actor和Movie节点的关系是ACTED_IN
.
我试过这个密码查询:
MATCH (a:Actor {id: "005A"})
OPTIONAL MATCH (a)-[r:ACTED_IN]->(m)
DELETE a, r, m;
但它没有用,我得到 TransactionFailureException: Unable to commit transaction
错误。
谁能给个解决办法?
更新:
我发现从其他节点 (Agency
) 到标记为 OWNED
的 Actor
节点存在关系。所以图表是这样的:
(aa:Agency)-[o:OWNED]->(a:Actor)
您确定 ID 编码为字符串 属性 吗?我猜电影数据库的 id 是一个整数,因此 id 不应该用引号引起来:
MATCH (a:Actor {id: 5})
OPTIONAL MATCH (a)-[r:ACTED_IN]->(m)
DELETE a, r, m;
[编辑]
您不能删除一个节点,除非它的所有关系也都被删除。在您的情况下,a
and/or m
节点可能具有 r
.
要获取与 a
和 m
关联的关系类型集,您可以使用以下内容(我已将结果限制为 10 行,以防 a
and/or m
有很多关系`):
MATCH (a:Actor {id: "005A"})
OPTIONAL MATCH ()-[rx]-(a)
OPTIONAL MATCH (a)-[r:ACTED_IN]->(m)
OPTIONAL MATCH (m)-[ry]-()
RETURN a, r, m, COLLECT(DISTINCT TYPE(rx)), COLLECT(DISTINCT TYPE(ry))
LIMIT 10;
我怀疑您的结果会显示 ACTED_IN
以外的类型。
以下查询应删除 s/he 出演的演员和所有电影:
MATCH (a:Actor {id: "005A"})
OPTIONAL MATCH ()-[rx]-(a)
OPTIONAL MATCH (a)-[r:ACTED_IN]->(m)
OPTIONAL MATCH (m)-[ry]-()
DELETE rx, ry, r, a, m;