如何在使用 cypher 与 UNWIND 迭代时删除关系
How to remove relations while iteration with UNWIND using cypher
下面的查询获取特定用户的所有组
在每个结果(每个组)上展开,并且仅当该组的计数关系为 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
谢谢。
您可以在 WHERE
中使用 size
,例如:
MATCH (me:userId{{1})-[rel:relation_group]-(allGroups:GROUP)
WHERE size((allGroups)<-[:relation_group]-()) = 1
DELETE rel
您不需要迭代,默认情况下,将针对 MATCH 中找到的每一行执行 MATCH 之后的后续子句,因此假设第一个 MATCH
returns 如下:
me rel allGroups
1 rel3 node5
1 rel4 node6
然后 DELETE
将在第一行执行,然后在第二行执行,依此类推...
下面的查询获取特定用户的所有组 在每个结果(每个组)上展开,并且仅当该组的计数关系为 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
谢谢。
您可以在 WHERE
中使用 size
,例如:
MATCH (me:userId{{1})-[rel:relation_group]-(allGroups:GROUP)
WHERE size((allGroups)<-[:relation_group]-()) = 1
DELETE rel
您不需要迭代,默认情况下,将针对 MATCH 中找到的每一行执行 MATCH 之后的后续子句,因此假设第一个 MATCH
returns 如下:
me rel allGroups
1 rel3 node5
1 rel4 node6
然后 DELETE
将在第一行执行,然后在第二行执行,依此类推...