Моя команда соответствия создает новые узлы вместо сопоставления отношений с существующими узлами - PullRequest
0 голосов
/ 06 января 2020

Я новичок и пытаюсь изучить NEO4J.

Сначала я выполнил приведенный ниже запрос к NEO4J, и он был успешно выполнен:

create(c:Company{CompanyCIN:"L01132WB1914PLC002502"})
create(d:Director{DirectorDIN:'434073'})

Но когда я запустил запрос к сопоставляя его или создавая отношения, он создает 2 новых узла.

match(c:Company{CompanyCIN:'L01132WB1914PLC002502'}),(d:Director{DirectorDIN:'434073'}) create (a)-[:Directed_by]->(b)

Может кто-нибудь подсказать мне, почему это происходит в NEO4J?

Here is the screenshot of the nodes

Ответы [ 2 ]

2 голосов
/ 06 января 2020

Псевдонимы в операторе CREATE (a и b) отличаются от псевдонимов в операторе MATCH (c и d).

Просто обновите запрос до:

MATCH(c:Company{CompanyCIN:'L01132WB1914PLC002502'}),(d:Director{DirectorDIN:'434073'})
CREATE (c)-[:Directed_by]->(d)
1 голос
/ 06 января 2020

@ julielinx ответ действителен, но если вы выполните запрос несколько раз, вы получите несколько Directed_by отношений между этими двумя узлами.

Чтобы избежать этого, вы должны использовать MERGE вместо CREATE, как в:

MATCH (c:Company{CompanyCIN:'L01132WB1914PLC002502'}), (d:Director{DirectorDIN:'434073'})
MERGE (c)-[:Directed_by]->(d)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...