我认为这可能是一个错误,但是,当删除关系集合时,也会删除起始节点。我正在运行neo4j社区版2.3.3并按顺序运行以下查询。
match (u:User)-[]->(p:Pie)-[c:CONSISTS_OF*1]->() where id(u) = 6398 and id(p)= 6436 return p,c
返回Displaying 3 nodes, 2 relationships.
和图片中的图表
match (u:User)-[]->(p:Pie)-[c:CONSISTS_OF*1]->() where id(u) = 6398 and id(p)= 6436 FOREACH( q in c | DELETE q)
结果为Deleted 2 relationships, statement executed in 103 ms.
然后我发现的是,而不是删除关系c的集合,节点p也被删除...
match (u:User)-[]->(p:Pie)-[c:CONSISTS_OF*1]->() where id(u) = 6398 and id(p)= 6436 return p
结果为(no rows)
我只想删除关系集合。我也觉得这个功能是有意义的,但自2013年底以来就没有重新审视...... https://github.com/neo4j/neo4j/issues/1612
编辑:在问题的早期版本中,我有DETACH DELETE而不是DELETE。在发布问题时这是一个错误。我已经修改过了。应该注意的是,我认为这可能是一个错误的原因是因为DETACH DELETE和DELETE在这种情况下表现相同。
答案 0 :(得分:1)
在删除关系后用于检查MATCH
节点是否存在的(p:Pie)
查询中,您仍然包含模式的-[c:CONSISTS_OF*1]->
部分。该部分与任何内容都不匹配,因为您删除了这些关系。但是,无论节点是否仍然存在,整个模式也不会匹配任何东西。
您可以使用MATCH (p:Pie) WHERE id(p) = 6436
来测试(p:Pie)
节点是否仍然存在。