我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

继续苏南大叔的neo4j图数据库系列教程,本文讲述CRUDU,也就是更新数据库里面的数据。对于neo4j图数据库来说,那就是更新节点标签,更新节点属性,更新关系,更新关系类型,更新关系属性。当然,鉴于关系必须基于两个节点的特殊性,这里还有特殊的更新方法。

苏南大叔:neo4j图数据库,如何更新一个节点或一个关系的信息? - neo4j-更新节点或关系
neo4j图数据库,如何更新一个节点或一个关系的信息?(图11-1)

大家好,这里是苏南大叔的“程序如此灵动”博客,这里讲述苏南大叔和计算机代码的故事。本文讲述如何更新图形数据库的节点及关系数据。本文测试环境:win10neo4j@4.4.5

对数据的更新,是建立在合理的match语句的基础上的。所以,本文的前置阅读文章是:

更新节点标签

添加新的标签:

match(n:Person) set n:Human

苏南大叔:neo4j图数据库,如何更新一个节点或一个关系的信息? - 增加标签
neo4j图数据库,如何更新一个节点或一个关系的信息?(图11-2)

替换标签:

match(n:Human) set n:人类 remove n:Human

苏南大叔:neo4j图数据库,如何更新一个节点或一个关系的信息? - 替换标签
neo4j图数据库,如何更新一个节点或一个关系的信息?(图11-3)

match(n:Person) remove n:人类

苏南大叔:neo4j图数据库,如何更新一个节点或一个关系的信息? - 删除标签
neo4j图数据库,如何更新一个节点或一个关系的信息?(图11-4)

更新节点属性

节点添加/修改属性

Match(n:Person{name:'sunan'}) set n.name='sunan',n.born=2000,n.live='北京'

苏南大叔:neo4j图数据库,如何更新一个节点或一个关系的信息? - 添加修改属性
neo4j图数据库,如何更新一个节点或一个关系的信息?(图11-5)

节点删除属性

Match(n:Person{name:'sunan'}) remove n.born return n

苏南大叔:neo4j图数据库,如何更新一个节点或一个关系的信息? - 删除属性
neo4j图数据库,如何更新一个节点或一个关系的信息?(图11-6)

节点属性更名

Match(n:Person{name:'sunan'}) set n.生活在=n.live remove n.live return n

苏南大叔:neo4j图数据库,如何更新一个节点或一个关系的信息? - 属性更名
neo4j图数据库,如何更新一个节点或一个关系的信息?(图11-7)

建立新的关系

两个节点之间可以有多条关系

MATCH (a),(b) WHERE a.name="sunan" AND b.title="The Matrix" CREATE (a) -[r:Watch {count: 1}]-> (b) return r;
match (n:Person{name:'sunan'})-[r]->(m:Movie{title:'The Matrix'}) return type(r);

苏南大叔:neo4j图数据库,如何更新一个节点或一个关系的信息? - 添加一个新关系
neo4j图数据库,如何更新一个节点或一个关系的信息?(图11-8)

更新或添加关系属性

match (n:Person{name:'sunan'})-[r]->(m:Movie{title:'The Matrix'}) set r.aa="aaa" return r,type(r)

苏南大叔:neo4j图数据库,如何更新一个节点或一个关系的信息? - 修改关系属性
neo4j图数据库,如何更新一个节点或一个关系的信息?(图11-9)

删除关系属性

match (n:Person{name:'sunan'})-[r]->(m:Movie{title:'The Matrix'})
remove r.aa
return r,type(r)

苏南大叔:neo4j图数据库,如何更新一个节点或一个关系的信息? - 删除关系属性
neo4j图数据库,如何更新一个节点或一个关系的信息?(图11-10)

更新关系类型

伪命题,建立关系必须有标签,查询的时候可以不带。标签只能整条带属性删除,然后新建一个新的关系和它的属性。

MATCH (n:Person{name:'sunan'})-[r:Watch]->(m:Movie{title:'The Matrix'})
CREATE (n)-[r2:Learn]->(m)
SET r2 = r
WITH r
DELETE r

这条是把Watch类型变成了Learn类型,然后属性被复制了过来。

苏南大叔:neo4j图数据库,如何更新一个节点或一个关系的信息? - 修改关系标签
neo4j图数据库,如何更新一个节点或一个关系的信息?(图11-11)

参考文献

综述

图数据库的数据更新部分就这么讲述完了,更多精彩文章内容,请点击苏南大叔的博客文章:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   neo4j    cypher