Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4J-在现有节点上创建关系_Neo4j_Cypher_Graph Databases - Fatal编程技术网

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

Neo4J-在现有节点上创建关系,neo4j,cypher,graph-databases,Neo4j,Cypher,Graph Databases,我是Neo4J的新手,我希望在现有节点和新节点之间创建新关系 我有一个大学节点和个人节点 我想给现有的大学分配一个新人 我正在尝试以下代码: MATCH(p:Person{name:'Nick}),(u:University{title:'Exeter})CREATE(p)-[:LIKES]->(u) 所以在上面的代码中:MATCH(p:Person{name:'Nick'})是新用户 而(u:University{title:'Exeter'})是现有的大学 但是它回来了(没有更改,没有行)

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

我有一个大学节点和个人节点

我想给现有的大学分配一个新人

我正在尝试以下代码:

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

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

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

但是它回来了
(没有更改,没有行)

我甚至尝试过没有匹配部分的查询,但也没有运气

我看过一些类似的答案,但它们似乎也不起作用


任何帮助都将不胜感激。谢谢。

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

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

这是因为当您匹配时,您会在数据库中搜索一个节点。db说我不能在“节点不存在”的情况下进行realtion

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

您还可以使用merge语句,如下所示:

MERGE要么匹配现有节点并将其绑定,要么创建新数据并将其绑定。它类似于MATCH和CREATE的组合,另外还允许您指定在匹配或创建数据时会发生什么

您可以执行以下查询:

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

WITH与此无关,您的查询是正确的,但更相关的是,他应该使用CREATE而不是MATCH来首先创建用户节点,切换您的CREATE和MATCH,而您不需要WITH,总之+1这只在您第一次运行它时起作用。在其他人的后续运行中,它将再次创建大学,因为MERGE将创建整个路径,除非整个路径已经存在。