首页 文章

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

提问于
浏览
3

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

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

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

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

谢谢

3 回答

  • 0

    刚试过,它对我有用(使用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
    
  • -2

    删除与名为“vishal1@myemail.com”的节点关联的所有“跟随”关系:

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

    为我工作:)

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

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

    Neo4j Relationshiptypes区分大小写 . 所以 ACTED_INacted_in 将充当不同的relationshipTypes

相关问题