24

可以说,我有一个用户:

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

但是,它返回两种关系。我知道我可以将财产与关系联系起来。但是,同样,我不知道密码语法。

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

谢谢!

4

2 回答 2

40

我使用此查询删除了原始图表上的关系:

START n=node(*) 
MATCH (n)-[rel:HAS_ROLE]->(r) 
WHERE n.name='Tamil' AND r.name='tester' 
DELETE rel
于 2013-09-26T06:31:50.003 回答
1

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

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;

我不确定这是否是正确的做法。但是,它有效。

于 2013-09-26T00:17:17.177 回答