Neo4J-создание связи на существующих узлах


Я новичок в Neo4J, и я ищу, чтобы создать новые отношения между существующим узлом и новым узлом.

У меня есть узел университета и узел человека.

Я пытаюсь назначить нового человека в существующий университет.

Я пытаюсь следовать коду:

MATCH (p:Person {name:'Nick'}), (u:University {title:'Exeter'}) CREATE (p)-[:LIKES]->(u)

Итак, в приведенном выше коде: MATCH (p:Person {name:'Nick'}) является новый пользователь

И (u:University {title:'Exeter'}) - это существующая Вселенная.

Но он возвращается (no changes, no rows)

Я даже попробовал запрос без Часть матча, но и не повезло.

Я просмотрел несколько подобных ответов, но они, похоже, тоже не сработали. Любая помощь была бы очень признательна. Спасибо.
3 4

3 ответа:

Матч перед u создать новый, как это предлагается в комментариях!

MATCH(u:University {title:'Exeter'})
CREATE(p:Person {name:'Nick'})
CREATE(p)-[w:LIKES]->(u)
return w

Вы также можете использовать инструкцию MERGE в соответствии с docs:

MERGE либо сопоставляет существующие узлы и связывает их, либо создает новые данные и связывает их. Это похоже на комбинацию MATCH и CREATE, которая дополнительно позволяет указать, что произойдет, если данные были сопоставлены или созданы.

Вы бы сделали запрос типа

MERGE (p:Person {name:'Nick'})-[:LIKES]->(u:University {title:'Exeter'})

Это потому, что при сопоставлении вы ищете узлы в вашей БД. БД говорит, что я не могу сделать realtion "когда узлы не существуют".

К счастью, есть нечто, называемое слиянием, это похоже на матч +create, когда он не находит весь путь, который он создает. это должно быть что-то вроде merge 'node1' merge'node2 ' create (node1) [] - >(node2)