如何删除Neo4j中特定类型的所有关系

时间:2014-03-11 10:11:05

标签: neo4j cypher

我是Neo4j // Cypher的新手,我正在按照教程进行操作。 使用电影数据库我试图使用以下查询删除所有“ACTED_IN”关系

match (:Person)-[r:ACTED_IN]->(:Movie)
DELETE r;

然而我发现我仍然在节点之间有一些“ACTED_IN”关系,我必须多次重新运行上一个查询才能完全删除这些关系。

为什么它不像我预期的那样工作? 这样做的正确方法是什么?

感谢

3 个答案:

答案 0 :(得分:6)

刚试过,它对我有用(使用Neo4j 2.0.1和2.1.0-M01)

match (:Person)-[:ACTED_IN]->(:Movie) return count(*);

-> count(*)
   172

match (:Person)-[r:ACTED_IN]->(:Movie) delete r;

-> Deleted 172 relationships, returned 0 rows in 172 ms

match (:Person)-[:ACTED_IN]->(:Movie) return count(*);

-> count(*)
   0

答案 1 :(得分:0)

删除所有' follow'与节点名称相关的关系' vishal1@myemail.com' :

MATCH (n { name:'vishal1@myemail.com' })-[r:follows]->() DELETE r

为我工作:)

此外,您还可以指定标签(在我的情况下'用户')以区分具有相同名称的节点

MATCH (n:User { name:'vishal1@myemail.com' })-[r:follows]->() DELETE r

答案 2 :(得分:-2)

Neo4j Relationshiptypes区分大小写。因此ACTED_INacted_in将充当不同的relationshipTypes