Neo4J - 在现有节点上创建关系

Neo4J - Creating Relationship on existing nodes

我是 Neo4J 的新手,我希望在现有节点和新节点之间创建新关系。

我有一个大学节点,一个人节点。

我正在尝试将新人分配到现有大学。

我正在尝试以下代码:

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

所以在上面的代码中:MATCH (p:Person {name:'Nick'})是新用户

AND (u:University {title:'Exeter'}) 是现有的大学。

但它又回来了(no changes, no rows)

我什至尝试过不带 MATCH 部分的查询,但也不走运。

我看过几个类似的答案,但它们似乎也没有用。

非常感谢任何帮助。谢谢。

按照评论中的建议,在创建新的之前进行匹配!

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

这是因为当你匹配时你在你的数据库中搜索一个节点。数据库说我无法实现 "when the nodes dont exist".

幸运的是,有一种叫做合并的东西,当他没有找到他创建它的整个路径时,它就像一个匹配+创建。 它应该类似于 merge 'node1' merge'node2' create(node1)[]->(node2)

您还可以根据 docs:

使用 MERGE 语句

MERGE either matches existing nodes and binds them, or it creates new data and binds that. It’s like a combination of MATCH and CREATE that additionally allows you to specify what happens if the data was matched or created.

你会做这样的查询

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