Подтвердить что ты не робот

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. Любые предложения были бы действительно замечательными!

Спасибо!

4b9b3361

Ответ 1

Я удалил отношение на исходном графике с помощью этого запроса:

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

Ответ 2

Я нашел его. Я изменил отношения, чтобы иметь свойство. Вот так:

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;

Я не уверен, что это правильный способ сделать или нет. Но это работает.