如何使用cypher在UNWIND迭代时删除关系

时间:2016-06-08 06:30:58

标签: neo4j cypher neo4jclient

以下查询获取特定用户的所有组 在每个结果(每个组)上展开,并且只有在与该组的计数关系为1时才应删除所有传入的关系。

example: group1<-user1  (will delete the incoming relationship to the group)

         group1-<user1 
         group1-<user2 (will remain all incoming relationships to the group)

能协助完成它吗?

MATCH (me:userId{{1})-[rel:relation_group]-(allGroups:GROUP)
unwind userGroups as group  
 //how to use CASE or WHERE in order to check if this group 
has only 1 relationship just remove it 

感谢。

1 个答案:

答案 0 :(得分:3)

您可以在size中使用WHERE,例如:

MATCH (me:userId{{1})-[rel:relation_group]-(allGroups:GROUP)
WHERE size((allGroups)<-[:relation_group]-()) = 1
DELETE rel

你不需要迭代,默认情况下,MATCH之后的后续子句将在MATCH中找到的每一行执行,所以让我们说第一个MATCH返回以下内容:

me     rel     allGroups
1      rel3     node5
1      rel4     node6

然后DELETE将执行第一行,然后执行第二行等等......