首页 > 其他 > 详细

Neo4j 第十篇:更新数据

时间:2019-05-30 13:42:07      阅读:120      评论:0      收藏:0      [点我收藏+]

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

一,创建节点

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 第十篇:更新数据

原文:https://www.cnblogs.com/ljhdo/p/10929708.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!