MERGE命令是COL语句中一个非常有效的命令,在Neo4J数据库中也是一个十分有用的命令。最近学习了下MERGE命令,特意来记录一下所得。
MERGE命令的作用
-
创建节点、关系和属性
-
从数据库中检索数据
可以看到,MERGE命令的作用简要概括就是"创建"、“检索”。所以我们就应该立马知道MERGE命令就是CREATE命令(创建)和MATCH命令(检索)的组合。
MERGE = CREATE + MATCH
特别地:
如果节点存在,则返回结果。
反之节点不存在,则创建新的节点/关系/属性并返回结果。
MERGE语法
MERGE (<node_name>:<label_name>
{
<Property1_name>:<Property1_Value>
.....
<Property2_name>:<Property2_Value>
})
参数说明:
No | Key_Word | Describe |
---|---|---|
1 | MERGE | Neo4j CQL关键字 |
2 | <node_name> | 节点/关系的名称 |
3 | <label_name> | 节点/关系的标签名称 |
4 | <property_name> | 节点/关系的属性名称 |
5 | <property_value> | 节点/关系的属性值 |
MERGE示例
此示例通过使用MERGE和RETURN命令创建班级学生个人资料。
1.创建具有属性:Id, Name的Student节点
merge (stu1:Student1{Id:2020001, Name:"Lihua"})
会发现Neo4j成功创建了一个节点,2个属性。
2.创建具有相同属性的同一个Student节点:Id,Name
merge (stu1:Student1{Id:2020001, Name:"Lihua"})
会发现会显示其实没有创建新的节点。
3.检索所有Student节点详细信息并观察结果
match (stu1:Student1)
return stu1.Id, stu1.Name
它只显示一行,因为CQL MERGE命令检查该节点在数据库中是否可用。 如果它不存在,它创建新节点。 否则,它不创建新的。
另外的,我们也来试试CREATE和MATCH语句的合并操作
CREATE+MATCH实例
1.创建具有属性:Id,Name的Stuent节点
create (stu2:Student2 {Id: 202002, Name:"Trump"})
2.创建具有相同属性的同一个Stuent节点:Id,Name
create (stu2:Student2 {Id: 202002, Name:"Trump"})
会发现,CREATE命令可以创建一个具有相同属性的同一个节点。
3.利用MATCH命令检索所有Profile节点详细信息并观察结果
match (stu2:Student2)
return stu2.Id, stu2.Name
观察到上面的查询结果,它显示2行重复的值。
CQL CREATE命令检查此节点是否可用,它只是在数据库中创建新节点。
总结
我们通过操作真实感受到了,MERGE命令就是CREATE命令和MATCH命令的结合。但是MERGE命令只能创建一个相同属性的节点。在实际Neo4j创建数据库中,会感受到MERGE命令会非常的方便。