如何在使用 cypher 使用 UNWIND 进行迭代时删除关系
Posted
技术标签:
【中文标题】如何在使用 cypher 使用 UNWIND 进行迭代时删除关系【英文标题】:How to remove relations while iteration with UNWIND using cypher 【发布时间】:2016-06-08 06:30:58 【问题描述】:然后以下查询获取特定用户的所有组 展开每个结果(每个组),并且仅当与该组的计数关系为 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:userId1)-[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】:您可以在WHERE
中使用size
,例如:
MATCH (me:userId1)-[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
将在第一行执行,然后在第二行执行,依此类推……
【讨论】:
但是你如何在每个组上迭代这种方式?因为您将获得组列表,如果传入关系的数量为 1,则需要检查每个组,将其删除,否则保留它 不需要迭代,只需在WHERE子句中给模式添加方向即可 大小如何在 allGroups 中的每个组上实际迭代? 我加了一点解释 发现新东西很酷,否则我们会很无聊:)以上是关于如何在使用 cypher 使用 UNWIND 进行迭代时删除关系的主要内容,如果未能解决你的问题,请参考以下文章
iOS - 如何在 Unwind Segue 中控制动画类型?
尝试在Neo4J C#Client上使用相同的命令进行展开和合并