我刚接触Neo4j//Cypher,正在跟随教程学习。在操作电影数据库时,我尝试使用以下查询语句删除所有的"ACTED_IN"关系。
match (:Person)-[r:ACTED_IN]->(:Movie)
DELETE r;
然而,我发现在节点之间仍存在一些“ACTED_IN”关系,并且我必须多次重新运行以前的查询才能完全删除这些关系。
为什么它没有按照我的预期工作? 正确的做法是什么?
谢谢
我刚接触Neo4j//Cypher,正在跟随教程学习。在操作电影数据库时,我尝试使用以下查询语句删除所有的"ACTED_IN"关系。
match (:Person)-[r:ACTED_IN]->(:Movie)
DELETE r;
然而,我发现在节点之间仍存在一些“ACTED_IN”关系,并且我必须多次重新运行以前的查询才能完全删除这些关系。
为什么它没有按照我的预期工作? 正确的做法是什么?
谢谢
我试过了,对我有效(使用的是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
要删除所有与名称为“vishal1@myemail.com”的节点关联的“关注”关系:
MATCH (n { name:'vishal1@myemail.com' })-[r:follows]->() DELETE r
对我有用 :)
此外,您还可以指定标签(在我的情况下为“用户”)以区分具有相同名称的节点
MATCH (n:User { name:'vishal1@myemail.com' })-[r:follows]->() DELETE r
Neo4j关系类型区分大小写。因此,ACTED_IN
和acted_in
将被视为不同的关系类型。