https://blog.csdn.net/amao1998/article/details/81017560
学习过程中的不容易理解的总结 一下
1 merge(p:明星{name:"郭麒麟"}) return p
merge如果该节点存在,那么就返回 如果不存在就 直接创建返回
2 a merge(p:明星{name:"郭小小"}) return *
b merge(p:明星{name:"郭小小"}) on create set p.age=18 return *
如果 执行a 在执行b那么 直接 返回 a节点 a有一个 name
如果 单独执行b 那么成功 返回 节点有 name 和age 两个属性
match(n)-[:blocks|knows]->(x) return x 表示 n关系是 blocks或者knows到x
match (n)-[r:blocks]->(x)
match (n)-[r]->(x)return r
关系是 带有空格的多个单词 用单引号 引起来,会将'type that has space in it' 视为一个整体 不会理解为 空格隔开
match (n) -[r:'type that has space in it']->() return r
多条边 :match (a)-[:knows]->(b)-[:konws]->(c)return a,b,c a出发 经过konws 到达 b在经过konws到达c
start a=node(3),x=node(2,4) match (a)-[:konws*1..3]->(x) return a,x 从a开始 经过(1-3个) knows到达 x
start a=node(3),x=node(2,4) match (a)-[r:konws*1..3]->(x) return r
start a=node(3) match p1=a-[:knows*0..1]->b,p2=b-[:blocks*0..1]-> return a,b,c,length(p1),length(p2)
match a-[?]->x return a,x表示 从 a出发 到达x 无论有没有边 /关系
match a-[r?:konws]->() return a,r 表示从a出发 找一条标为konws的边 然后标志出这条表
start a=node(3) match (a)-[:konws]->(b)-[:knows]->(c),(a)-[:blocks]->(d)-[:knows]->(c) return a,b,c,d
最短路径: start d=node(1),e=node(2) match p=shortestPath(d-[*..15]->e) return p
最短路径 比如3可能会有多条 :
start d=node(1),e=node(2) match p=allShortestPaths(d-[*..15]->e) return p
过滤边 START n=node(3) MATCH (n)-[r]->() WHERE type(r) =~ 'K.*' RETURN r
记录路径 start a=node(3) match p=a-->b return p
START a=node(3), b=node(2) MATCH a-[?:KNOWS]-x-[?:KNOWS]-b RETURN x 表示 x要不然经knows连接a,要不然连接b,要不然既连接a又要连接b
start n=node(3,1) where has(n.belt) return n #has表示 节点有belt这个属性
start n=node(3,1) where n.belt?='white' return n #表示 如果 n没有belt这个属性那么就返回true 意思就是有没有belt属性都返回
start n=node(3,1) where n.belt!='white' return n !=表示 如果 n有belt这个属性就返回true 只返回有belt属性的
START a=node(3, 4, 5) RETURN ID(a) 对于节点和边有唯一的 id号 返回 相应的id
START a=node(3) RETURN coalesce(a.hairColour?, a.eyes?) 返回有表达式组成的集合中 第一个非空值
START a=node(2) RETURN a.array, head(a.array) 返回集合中的第一个值
START a=node(2) RETURN a.array, last(a.array)最后一个
START n=node(1) RETURN timestamp()返回当前的时间
START a=node(3), c=node(2)MATCH p=a-->b-->c RETURN NODES(p) 返回路径上所有的节点 返回值是一个list
START a=node(3), c=node(2)MATCH p=a-->b-->c RETURN RELATIONSHIPS(p)返回路径上所有的关系 也是一个list
START a=node(3), b=node(4), c=node(1)MATCH p=a-->b-->c RETURN extract(n in nodes(p) : n.age) 返回路径上每一个系欸但的 年龄 返回值 【13,45,28】
START a=node(2) RETURN a.array, filter(x in a.array : length(x) = 3)
START a=node(2) RETURN a.array, tail(a.array) #返回除去第一个元素之外的其他元素组成的 list
删除 带 关系的节点:
start n=node(*),m=node(*) match n-[r]-m delete r delete n
#删除全部 节点和 关系
match (n) detach delete n