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 ответа:
Матч перед 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)