提问者:小点点

Neo4j:如何删除与cypher的特定关系?


假设,我有一个用户:

CREATE (n { name: 'Tamil' })

和2个角色:

CREATE (n { name: 'developer' } ) 
CREATE (n { name: 'tester' } )

然后,我建立用户之间的关系

CYPHER 1.9  START a = node(*), b = node(*) 
WHERE a.name = 'Tamil' AND b.name = 'developer' 
CREATE (a)-[r:HAS_ROLE]->(b) 
RETURN r

CYPHER 1.9  START a = node(*), b = node(*) 
WHERE a.name = 'Tamil' AND b.name = 'tester' 
CREATE (a)-[r:HAS_ROLE]->(b) 
RETURN r

现在,我想从用户中删除测试人员角色关系。我尝试过:

CYPHER 1.9  START a = node:node_auto_index('name:Tamil') 
MATCH a-[r:HAS_ROLE]-() 
RETURN r

但是,它返回两个关系。我知道我可以用关系附加属性。但是,同样,我不知道它的cypher语法。

我是Neo4j的新手。任何建议都很棒!

谢谢!


共2个答案

匿名用户

我删除了与此查询的原始图上的关系:

START n=node(*) 
MATCH (n)-[rel:HAS_ROLE]->(r) 
WHERE n.name='Tamil' AND r.name='tester' 
DELETE rel

匿名用户

我找到了。我改变了关系,拥有了财产。像这样:

CYPHER 1.9  START a = node(*), b = node(*) 
WHERE a.name = 'Tamil' AND b.name = 'developer' 
CREATE (a)-[r:HAS_ROLE {id: xyz}]->(b) 
RETURN r

CYPHER 1.9  START a = node(*), b = node(*) 
WHERE a.name = 'Tamil' AND b.name = 'tester' 
CREATE (a)-[r:HAS_ROLE {id: abc}]->(b) 
RETURN r

然后下面的这段代码删除了指定的关系。

CYPHER 1.9  START a = node:node_auto_index('name:Tamil') 
MATCH a-[r:HAS_ROLE]-() 
WHERE r.id = abc
DELETE r;

我不确定这是不是正确的方法。但是,它起作用了。