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

时间:2016-01-24 22:36:41

标签: neo4j cypher graph-databases

我是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部分的情况下尝试了查询,但也没有运气。

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

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

3 个答案:

答案 0 :(得分:11)

在你创建新的之前匹配,如评论中所建议的那样!

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

答案 1 :(得分:1)

您还可以根据docs

使用MERGE语句
  

MERGE可以匹配现有节点并绑定它们,也可以创建新数据并绑定它们。它就像是MATCH和CREATE的组合,它还允许您指定在匹配或创建数据时会发生什么。

您可以执行类似

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

答案 2 :(得分:0)

这是因为匹配时搜索数据库中的节点。数据库表示,当节点不存在时,我无法做到这一点。

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