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'})
我是 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'})