我试图删除2个相关节点的所有关系。
这是我一直试图做的查询:
match (picture:Picture) where picture.id='101531146106623881437036830'
optional match ()-[r]- picture-[:UPLOADED_TO]-(facebook:Facebook)-[rf]-()
with r,rf,picture,facebook,picture.id as id
delete r,rf,picture,facebook
return id
由于某种原因,似乎无法正确行事。
答案 0 :(得分:2)
这个怎么样?
MATCH ()-[r]-(p:Picture {id:'101531146106623881437036830'})-[:UPLOADED_TO]-(fb:Facebook)-[rf]-()
DELETE r, p, fb, r
答案 1 :(得分:2)
您的查询无效,因为您无法删除图片,但关系仍然与之相关联。
match (picture:Picture) where picture.id='101531146106623881437036830'
好的,你匹配图片节点,这里一切都很好
optional match ()-[r]- picture-[:UPLOADED_TO]-(facebook:Facebook)-[rf]-()
使用可选匹配是一种选择,但问题是您没有为UPLOADED_TO
设置变量,因此查询可以看到这种关系,但没有引用。
with r,rf,picture,facebook,picture.id as id
在这里你推送你对删除部分的引用(实际上不需要它,只在这里使用别名)
delete r,rf,picture,facebook
return id
最后你删除了你想要删除的内容,但是在这里你得到一个错误“无法删除节点,因为它有关系”或类似的东西。这是因为UPLOADED_TO
关系仍然存在。
只需添加对UPLOADED_TO
关系的引用即可将其删除。
match (picture:Picture) where picture.id='101531146106623881437036830'
optional match ()-[r]- picture-[r2:UPLOADED_TO]-(facebook:Facebook)-[rf]-()
with r2,r,rf,picture,facebook,picture.id as id
delete r2,r,rf,picture,facebook
return id
MicTech的答案也应该有效,但我想澄清你的错误以避免再次这样做;)