更新图包括图的节点和关系的创建、更新和删除,也能更新图的节点和关系的属性、节点标签和关系类型。

一,创建节点

1,创建空的节点

CREATE (n)
CREATE (a),(b)

2,创建带标签的节点

CREATE (n:Person)
CREATE (n:Person:Swedish)

3,创建带标签和属性的节点

CREATE (n:Person { name: 'Andres', title: 'Developer' })

二,创建关系

创建节点之前的关系

1,在两个节点之间创建关系

在两个节点之间创建关系,并设置关系类型

MATCH (a:Person),(b:Person)
WHERE a.name = 'A' AND b.name = 'B'
CREATE (a)-[r:RELTYPE]->(b)
RETURN type(r)

2,创建关系,并设置关系的属性

MATCH (a:Person),(b:Person)
WHERE a.name = 'A' AND b.name = 'B'
CREATE (a)-[r:RELTYPE { name: a.name + '<->' + b.name }]->(b)
RETURN type(r), r.name

3,CREATE子句和模式

在CREATE子句和模式中,对于模式中的任意部分,如果它不存在于图中,那么CREATE子句创建它;如果存在于图中,那么就会引用它。

CREATE p =(andres { name:'Andres' })-[:WORKS_AT]->(neo)<-[:WORKS_AT]-(michael { name: 'Michael' })
RETURN p

三,删除节点和关系

使用delete子句删除节点、关系和路径,当删除节点时,该节点必须是孤立的节点,也就是说,必须首先删除跟节点相关的所有关系。

detach delete: 表示删除一个节点或多个节点,跟节点相关的所有关系也都被删除。

1,删除节点

MATCH (n:Person { name: 'UNKNOWN' })
DELETE n

2,删除所有节点和关系

MATCH (n)
DETACH DELETE n

3,删除一个节点和它的所有关系

MATCH (n { name: 'Andres' })
DETACH DELETE n

4,删除关系

MATCH (n { name: 'Andres' })-[r:KNOWS]->()
DELETE r

四,更新属性或标签

set子句用于更新节点的标签,向节点和关系中添加属性

1,向节点或关系中添加属性

MATCH (n { name: 'Andres' })
SET n.surname = 'Taylor'
RETURN n.name, n.surname

2,移除属性

如果设置属性的值是NULL,相当于把该属性从节点或关系中移除

MATCH (n { name: 'Andres' })
SET n.name = NULL RETURN n.name, n.age

3,复制属性

把一个节点的属性复制给另一个节点

MATCH (at { name: 'Andres' }),(pn { name: 'Peter' })
SET at = pn
RETURN at.name, at.age, at.hungry, pn.name, pn.age

4,从Map中添加属性

MATCH (p { name: 'Peter' })
SET p += { hungry: TRUE , position: 'Entrepreneur' }

5,在一条set子句中添加多个属性

MATCH (n { name: 'Andres' })
SET n.position = 'Developer', n.surname = 'Taylor'

6,向节点中添加标签

MATCH (n { name: 'Stefan' })
SET n:German
RETURN n.name, labels(n) AS labels

7,向节点中添加多个标签

MATCH (n { name: 'Emil' })
SET n:Swedish:Bossman
RETURN n.name, labels(n) AS labels

五,移除属性

使用remove子句从节点中移除标签和属性,从关系中移除属性。

1,移除属性

默认情况下,Neo4j不允许存在值为null的属性;如果属性不存在,那么返回该属性的值是null。

MATCH (a { name: 'Andres' })
REMOVE a.age
RETURN a.name, a.age

2,移除节点的标签

MATCH (n { name: 'Peter' })
REMOVE n:German
RETURN n.name, labels(n)

3,移除节点的多个标签

当节点的标签为空时,labels(n)函数返回空的list

MATCH (n { name: 'Peter' })
REMOVE n:German:Swedish
RETURN n.name, labels(n)

六,foreach子句

列表和路径是Cypher中的关键概念,foreach子句用于更新数据,例如,对路径中的元素或通过聚合创建的列表执行更新命令。

1,对路径中的元素执行更新命令

对路径中匹配的所有节点,添加marked属性,并设置属性值为TRUE

MATCH p =(begin)-[*]->(END )
WHERE begin.name = 'A' AND END .name = 'D'
FOREACH (n IN nodes(p)| SET n.marked = TRUE )

参考文档:

Cypher Clauses

Neo4j 第十篇:更新数据的更多相关文章

  1. FreeSql (十)更新数据

    FreeSql支持丰富的更新数据方法,支持单条或批量更新,在特定的数据库执行还可以返回更新后的记录值. var connstr = "Data Source=127.0.0.1;Port=3 ...

  2. Struts2第十篇【数据校验、代码方式、XML配置方式、错误信息返回样式】

    回顾以前的数据校验 使用一个FormBean对象来封装着web端来过来的数据 维护一个Map集合保存着错误信息-对各个字段进行逻辑判断 //表单提交过来的数据全都是String类型的,birthday ...

  3. FreeSql (十二)更新数据时指定列

    var connstr = "Data Source=127.0.0.1;Port=3306;User ID=root;Password=root;" + "Initia ...

  4. FreeSql (十四)批量更新数据

    FreeSql支持丰富的更新数据方法,支持单条或批量更新,在特定的数据库执行还可以返回更新后的记录值. var connstr = "Data Source=127.0.0.1;Port=3 ...

  5. FreeSql (十一)更新数据 Where

    var connstr = "Data Source=127.0.0.1;Port=3306;User ID=root;Password=root;" + "Initia ...

  6. FreeSql (十三)更新数据时忽略列

    var connstr = "Data Source=127.0.0.1;Port=3306;User ID=root;Password=root;" + "Initia ...

  7. Neo4j 第五篇:批量更新数据

    相比图形数据的查询,Neo4j更新图形数据的速度较慢,通常情况下,Neo4j更新数据的工作流程是:每次数据更新都会执行一次数据库连接,打开一个事务,在事务中更新数据.当数据量非常大时,这种做法非常耗时 ...

  8. Python之路【第二十篇】:待更新中.....

    Python之路[第二十篇]:待更新中.....

  9. Python之路【第十篇】:HTML -暂无等待更新

    Python之路[第十篇]:HTML -暂无等待更新

随机推荐

  1. 打开excel打印时报“不能使用对象链接和嵌入”

    解决思路: 1.以WIN + R 打开命令行, 在命令行中输入dcomcnfg,打开组件服务. 2.在组件服务窗口中,点击到[控制根节点]->[组件服务]->[计算机]->[我的电脑 ...

  2. ArrayList、LinkedList和Vector的源码解析,带你走近List的世界

    java.util.List接口是Java Collections Framework的一个重要组成部分,List接口的架构图如下: 本文将通过剖析List接口的三个实现类——ArrayList.Li ...

  3. Python中全局变量的引用与修改之格式影响

    先来看下面的代码及执行结果: a = 1 b = [2,3] def nums(): a = 2 b[0] = 0 print(a) print(b) print(a) print(b) nums() ...

  4. Shell—三剑客(grep、sed、awk)

    grep命令详解 文本搜索工具,根据用户指定的“模式(pattern)”对目标文本进行过滤,显示被模式匹配到的行. 命令格式:grep  [options]  pattern  filename.gr ...

  5. JSON理解(一篇就够了)

    可以看看视频讲解,视频几十分钟就结束了 JSON 1.什么是json 其实是一种数据格式的规范,与开发的语言无关,轻量级的数据格式 全称JavaScript Object Notation 2.优点: ...

  6. react中antd的表格自定义展开

    antd的表格官方案例中给出的都是固定的图表展开,在做需求的时候,需要使用点击最后一列,然后出现展开内容,实现效果图如下 在最开始设置一个全局变量 const keys = [];在设置列参数的函数中 ...

  7. vue实现点击图标,图标在2s中完成旋转

    <!-- 点击 vue实现点击图标,图标在2s中完成旋转 1==>如何让它在2s内完成旋转 使用动画 transform: rotate(-180deg); 动画的运动状态 transit ...

  8. 22.Java基础_StringBuilder类

    String类对象的拼接操作:执行到s+="world"语句时,常量池会先创建"world"对象,再去创建"helloworld"对象,最后 ...

  9. 8.Java基础_if-else和switch选择语句

    /* 选择语句(基本与C++相同) if-else语句: 格式一: if(关系式){ 语句体; } 格式二: if(关系式){ 语句体; } else{ 语句体; } 格式三: if(关系式){ 语句 ...

  10. C++学习七 C++实现add(1)(2)(3)

    一.代码实现: class Yoba { public: Yoba(int n) : _n(n) {} Yoba operator() (int n) { return Yoba(_n + n); } ...