web-dev-qa-db-ja.com

Neo4j:cypherとの特定の関係を削除するにはどうすればよいですか?

たとえば、私にはユーザーがいます:

CREATE (n { name: 'Tamil' })

および2つの役割:

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

次に、ユーザーと2つの役割のそれぞれとの関係を作成します。

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は初めてです。どんな提案でも本当に素晴らしいでしょう!

ありがとう!

24
user405398

このクエリで元のグラフの関係を削除しました:

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;

これが正しい方法であるかどうかはわかりません。しかし、それは機能します。

1
user405398