1、概述
之前章节的内容都是对已有的图数据库进行查询,但是进行查询的前提是,已经构建好了一个图形数据库。构建图形数据库同样是一个非常关键的步骤,本章主要介绍对节点、关系、属性的增删改。
2、create操作
新增节点
在创建节点时,可以创建单个节点和多个节点,请参照下面代码
create (m)create (x),(y)
但是这样的节点毫无意义,所以最基本的应该创建一个带标签的节点,请参照以下代码
create(n:明星)create(n:明星:导演)
同时也可以创建带有属性的节点
create(n:明星{name:'郭德纲',born:'1973'})
也可以在创建好节点之后返回结果
create(n:明星{name:'岳云鹏',born:'1985'}) return n
新增关系
match(a:明星{name:'郭德纲'}),(b:明星{name:'岳云鹏'})create (a)-[r:老师]->(b),(b)-[r1:学生]->(a)return *
效果如下图所示:
3、merge操作
merge操作可以认为是create与match的组合,在进行merge操作的时候,会检测符合指定模式的节点是否存在,如果存在就锁定该节点进行下一步操作。如果不存在就创建一个新节点并锁定他。
使用merge进行查询操作,此时该节点存在
merge(p:明星{name:"郭德纲"}) return p
查询结果如下:
使用merge创建节点,此时该节点不存在
merge(p:明星{name:"郭麒麟"}) return p
merge与create搭配使用
如果我们不想创建重复的节点,可以使用这种搭配,在创建新节点时会检测是否有相同属性的节点存在,请参照如下代码:
merge(p:明星{name:"郭麒麟",age:18})on create set p.sex = '男'return *
执行该代码时,并没有成功是因为制定的节点已经存在,无法重新创建,但下面代码就能够执行成功
merge(p:明星{name:"孟鹤堂",age:18})on create set p.sex = '男'return *
merge与match搭配使用
如果我们想设置已经存在的节点的属性,在节点不存在时不需要创建时,可以使用该语句
merge(p:明星{name:"孟鹤堂",age:18})on match set p.age = 20return *
merge与create,match搭配使用
如果想达到如果节点不存在就创建并设置其属性,如果存在就查找并设置属性的话,可以参照如下代码:
merge(p:明星{name:"孟鹤堂",age:18})on create set p.age = 21on match set p.age = 20return *
merge新建关系
match(p:明星{name:"孟鹤堂"}),(p1:明星{name:"郭德纲"}),(p2:明星{name:"岳云鹏"})merge (p1)-[r:老师]->(p)<-[r1:师兄弟]-(p2)return *
结果如下图所示:
merge任意方向的关系
match(p:明星{name:"孟鹤堂"}),(p1:明星{name:"郭麒麟"})merge (p1)-[r:师兄弟]-(p)return *
查询结果如下图所示:
merge与match搭配达到建立一个两个已有节点的关系
match(p:明星{name:"岳云鹏"})merge(p1:明星{name:"郭麒麟",age:18})merge (p1)-[r:师兄弟]->(p)-[r1:师兄弟]->(p1)return *
执行效果如下:
merge与match搭配达到建立一个已有节点与一个不存在的节点的关系
match(p:明星{name:"岳云鹏"})merge(p1:明星{name:"张云雷",age:18})merge (p1)-[r:师兄弟]->(p)-[r1:师兄弟]->(p1)return *
3、set修改节点属性与关系
使用set修改属性
match(p:明星{name:"岳云鹏"})set p.age=20return *
使用set删除属性
match(p:明星{name:"岳云鹏"})set p.age=NULLreturn *
4、使用delete删除节点
删除没有关系的节点
match(p:明星)where p.name is NUlldelete p
删除已经存在关系的节点
如果节点已经存在关系,在删除节点时会出现下列错误
此时应该使用下面语句进行删除:
match(p:明星{name:'张云雷'})detach delete p
5、使用remove删除标签与属性
使用remove删除属性
match(p:明星{name:'张云雷',age:18,alias:"二爷"})remove p.aliasreturn p
使用remove删除标签(谨慎使用)
match(p:明星{name:'张云雷',age:18})remove p:明星return p
原文出处:https://blog.csdn.net/amao1998/article/details/81017560
共同学习,写下你的评论
评论加载中...
作者其他优质文章