neo4j/cypher:在一个请求中删除双链接列表

neo4j/cypher:在一个请求中删除双链接列表,neo4j,cypher,Neo4j,Cypher,使用Neo4j,我为每个用户实现了一个新闻提要。 我使用的是一个具有两种关系的双链接列表“下一个活动”/“上一个活动”。 在每个活动节点上,我可以将其他关系设置为“LIKE”。 当一个用户在我的系统中删除一个用户时,我想删除所有的新闻源。 因此,我必须迭代每个活动,删除它(以及类似的所有关系),并能够使用关系“next_activity”转到下一个活动 是否可以在一个请求中使用Cypher(我的意思是使用*.100选项) 谢谢大家! 我尝试过(版本1.8.2): 但我有“交易失败例外” 我将在

使用Neo4j,我为每个用户实现了一个新闻提要。 我使用的是一个具有两种关系的双链接列表“下一个活动”/“上一个活动”。 在每个活动节点上,我可以将其他关系设置为“LIKE”。 当一个用户在我的系统中删除一个用户时,我想删除所有的新闻源。 因此,我必须迭代每个活动,删除它(以及类似的所有关系),并能够使用关系“next_activity”转到下一个活动

是否可以在一个请求中使用Cypher(我的意思是使用*.100选项)

谢谢大家!


我尝试过(版本1.8.2):

但我有“交易失败例外”


我将在1.9.2 RC2上进行测试

我认为类似的东西应该可以工作:

start user=node... // lookup user in index
match p=user-[:NEXT*]-activity // find all activities nodes in the linked list
with nodes(p) as activities // this also includes the user
foreach activity in activities: 
  match activity-[r?]-() // get all relationships coming off of each activity
  delete activities, r; // delete all for each activity
更新:新想法。我将把另一个想法留给后人。这应该是可行的,因为它应该匹配每个路径,直到结束,我们将只使用终结点来删除这些路径之外的:LIKE关系(或任何关系)

start user=node... // lookup user in index
match p=user-[:NEXT*]-activity, activity-[r?]-()
delete user, activity, r;
我建立了一个图表并进行了测试,所以我认为它应该是一个通用的解决方案


谢谢,这是一个很好的线索,但现在它返回:cPerTypeException:预期“活动”是一个节点,但我是一个集合,我想我必须在activies集合上使用foreach或类似的东西?(我使用的是1.8.2版本)抱歉,是的。你需要为这个做foreach。这可能在1.8.2中起作用,也可能不起作用,我要到今晚晚些时候才能测试它……好的,我现在在1.9.2上试一下,我会和你联系的。不幸的是,我们不能在foreach中使用MATCH,也不能在1.9.RC2中使用MATCH
start user=node... // lookup user in index
match p=user-[:NEXT*]-activity, activity-[r?]-()
delete user, activity, r;