neo4j--Cypher学习笔记

2017-12-11  本文已影响0人  松爱家的小秦

(1)创建节点

create (n:User {name:"Dav"})

UNWIND[{name:"a"},{name:"b"}] AS p CREATE (n:Test) SET n=p

这个可以创建两个节点作为一个列表

out:

│[{"name":"a"},{},{"name":"b"}]

(2)创建关系

MATCH (n{name:"a"}),(m{name:"b"}) CREATE (n)-[r:KNOWS]->(m)

红色这个就是我们要的

out:

MATCH (n{name:"a"}),(m{name:"Dav"}) CREATE (n)-[:朋友{亲密度:3}]->(m)

(3)用MERGE创建节点

MERGE (n:Test{name:"c"}) ON CREATE SET n.created = timestamp()

首先检查Test标签,属性为name的值的节点c是否存在,存在使用已有节点,否则创建一个新的节点。

(4)用MERGR创建关系

用合并的方式创建关系,先检测关系存不存在,若存在则不修改任何数据,否则创造新的关系

MATCH (a:Person{name:'Joel Silver'}),(b:Person{name:'J.T. Walsh'}) MERGE (a)-[r:LOVES]->(b)

匹配出名字叫Joel Silver的人和名字叫J.T. Walsh的人建立关系LOVES

出现这个话,代表已经建立成功了

Created 1 relationship, completed after 199 ms.

如果出现这个代表失败,可能是已经存在这个关系了也有可能是找不到叫这两个名字的人

(5)查询信息

MATCH (n:Person) RETURN n LIMIT 25

从标签为Person的图数据库里取出25条数据

(6)用SET更新数据

MERGE (n:Test{name:"a"}) SET n.created = timestamp()

用SET关键字修改节点n的属性created将其设置为当前时间,使用时间戳函数timestamp()来返回当前时间

UNWIND [{age:30},{addr:"sz"}] AS prop MERGE (n:Test{name:"b"}) SET n += prop

为原来的节点添加属性,addr和age

输出:

:193 addr: sz age:30 name:b

(7)用DELETE删除数据

MATCH (n)DELETE n

这个会报错,因为必须删除关系才能删除节点

MATCH ()-[r:朋友]->(m) DELETE r,m

要这么操作,查找出朋友关系r以及朋友所指向的节点m,并同时把r和m删除

Deleted 1 node, deleted 1 relationship, completed after 8 ms.

(8)用REMOVE来移除数据

MATCH (n) REMOVE n:Test

用REMOVE来移除数据,移除带有Test标签的所有结点

Removed 3 labels, completed after 9 ms.

用REMOVE来移除节点时要小心,这个不会因为如果原来这个被删除的节点有其他关系

那么这个节点被删除后,关系会指向空节点

用来删除节点的属性

MATCH (n{name:"b"}) REMOVE n.age

输出:Set 1 property, completed after 8 ms.

(9)使用循环FOREACH

WITH ["a","b","c"] AS coll FOREACH (value IN coll | CREATE (:Person{name:value}))

这样会创建三个name叫a,b,c的Person

Added 3 labels, created 3 nodes, set 3 properties, completed after 7 ms.

上一篇 下一篇

猜你喜欢

热点阅读