在上篇文章中,我们介绍了在项目中如何使用Java来操作Neo4j图数据库。今天我们就仔细的学习一下,Neo4j中如何创建节点,以及Create和Merge的区别使用。
Create的简单用法
在Neo4j中,我们使用Create来创建节点。
create(n:Role{name:"主角",age:10}) return n
我们创建一个Role标签的节点,属性name的值为主角,age的值为10
on create
在Neo4j中我们有时候也会用到On Create,这是一个限定条件,当创建的时候才执行,不创建就不执行,经常是配合Merge使用所以接下来我们先了解一下Merge的用法
Merge的用法
Merge的用法其实可以看成Create和Match的结合,它能保证元素一定存在,如果不存在就创建一个节点
merge(n:Role{name:"主角",age:11})
如上,我们会查询Role标签,如果找到属性name值为主角,age值为11的节点,就返回不然就创建一个节点。
MATCH (n:Person {name:'tom'}), (m:Person {name:"jarry"})
MERGE (n)-[r:friend]->(m)
RETURN r
也可以查询两个节点,如果查询到在查看节点之间是否是friend的关系,如果是就返回,如果两个节点之间没关系就建立一个friend的关系。
merge(n:Role{name:"主角",age:11}) On create set n.age=13 return n
Merge通常也会与On Create一起使用,如上查看Role标签是否存在一个name为主角,age为11的节点,如果有就返回,如果没有就创建一个节点,但是由于有On Create表示如果创建了节点就修改age的值为13
On match
有On Create同样的也就有On match,它们的用法都是相似的
merge(n:Role{name:"主角",age:11}) On match set n.age=13 return n
查看Role标签是否存在一个name为主角,age为11的节点,如果有就修改age的值为13,如果没有就创建一个节点