在neo4j中删除多个节点及其关系

时间:2013-05-27 14:16:30

标签: java neo4j cypher spring-data-neo4j

我试图删除一些连接的节点,一起说 Photo ,其他连接的节点有关系。 案例是这样的:
相册 -CONTAINS_PHOTO- 照片(此处可能是多张图片)
照片 -taken_at- 位置
照片 -HAS-的注释
评论 -ADDED_BY- 用户

我想从Photo删除注释节点。(由于相册和用户是父节点,因此我不需要删除它们,除非n直到需要)
在neo4j webadmin控制台上,我发出了这个查询:

start pht=node:__types__(className="org.sg.domain.Photo"),
cmt=node:__types__(className="org.sg.domain.Comments") 
MATCH pht-[r:HAS]-x,pht-[t:taken_at]-x, cmt-[s]-y 
WHERE pht.photoId="MhQ2W1GrJ" AND 
pht.albumName="FirstAlbum" AND
pht.userName="abc" delete r,s,t,pht,cmt;

(其中'x'和'y'是一般占位符。)

我收到了这个输出:

Invalid query
Node[7] has been deleted in this tx

(其中Node[7]表示Photo对象。虽然它显示Node [7]已删除但不正确)。
我将标准更改为MATCH节点关系为
MATCH pht-[r]-xMATCH pht-[r?:HAS | :taken_at]-x
MATCH pht-[r:HAS]-x, pht-[s:taken_at]-x,但没有结果。

我经历了thisofficial link,但我想,我离某些东西很远......请帮忙。

1 个答案:

答案 0 :(得分:2)

您需要单独查询和修改updating the graph的密码查询部分。 WITH用作分隔令牌:

START pht=node:__types__(className="org.sg.domain.Photo"),
cmt=node:__types__(className="org.sg.domain.Comments") 
MATCH pht-[r:HAS]-x,pht-[t:taken_at]-x, cmt-[s]-y 
WHERE pht.photoId="MhQ2W1GrJ" AND 
pht.albumName="FirstAlbum" AND
pht.userName="abc" 

WITH r,s,t,pht,cmt
delete r,s,t,pht,cmt;