我是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部分的情况下尝试了查询,但也没有运气。
我看过几个类似的答案,但它们似乎也没有用。
非常感谢任何帮助。谢谢。
答案 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)