例如,我想要删除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
)与Actor
节点之间存在关系,标记为OWNED
。所以图表是这样的:
(aa:Agency)-[o:OWNED]->(a:Actor)
答案 0 :(得分:3)
[EDITED]
除非删除了所有关系,否则无法删除该节点。在您的情况下,a
和/或m
节点可能具有r
以外的关系。
要获取与a
和m
相关联的一组关系类型,您可以使用以下内容(我已将结果限制为10行,以防a
和/或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
以外的其他类型。
以下查询应删除演员和他/她所扮演的所有电影:
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;
答案 1 :(得分:0)
你确定id被编码为字符串属性吗?我想电影数据库的id是一个整数,因此id不应该用引号括起来:
MATCH (a:Actor {id: 5})
OPTIONAL MATCH (a)-[r:ACTED_IN]->(m)
DELETE a, r, m;