04_Cypher之进阶操作

04_Cypher之进阶操作

文章目录

; Create与Relationship

Merge VS Create

  1. Create:用于创建图元素,节点与关系
  2. Merge: 可以确保图数据库中存在某个特定的模式。如果该模式不存在,则创建它(要么整个模式匹配到, 要么整个模式被创建)

Merge与Create创建方式对比如下:

create (u1:User),(u2:User) return u1,u2;
create (u:User{name:'A'})-[r:Friend{name:u.name + '' + u2.name}]->(u2:User{name:'B'});
merge (u:User{name:'A'})-[r:Friend{name:u.name + '' + u2.name}]->(u2:User{name:'B'});
match (u1:User{name:'A'}),(u2:User{name:'B'}) merge (u1)-[:Friend{type:'good'}]->(u2);
match (u1:User{name:'A'})-[r]-(u2:User{name:'B'}) delete u1,u2,r

节点与关系的赋值

  1. with 语句将分段的查询部分连接在一起,查询结果从一部分以管道的形式传递给另外一部分作为开始点
  2. delete用于删除图元素(节点、关系、路径),删除属性和标签参考Remove
match (u1:User{name:'A',age=34}),(u2:User{name:'B',address='深圳'}) set u1 = u2
match (n:User{name:'二麻子'})-[r1]-(n2:User{name:'李四'})-[r2]-(n3:User{name:'孙七'}) set r2.born=2021,r1.born=2020
match (n2:User{name:'李四'})-[r2]->(n3:User{name:'孙七'}) merge (n2)-[r3:Friend]->(n3) with r2 delete r2

FOREACH标记节点

  1. 可以使用FOREACH来更新其中的数据,括号中的变量是与外部分开的,这意味着FOREACH中创建的变量不能用于该语句之外
  2. 注意match后面不能直接更extract函数(可以查看异常提示),它用于return关键字,foreach语法格式与extract相同
  3. 在管道的右边可以执行任何的 更新命令,包括CREATE、DELETE、FOREACH
MATCH (n:User{name:'李四'}) foreach (p in ['C','D','E'] | create (n)-[:Friend]->(new:User{name:p}))

return

  1. return语句有三个子语句,分别为skip,limit,order by
  2. return * 代表返回所有
MATCH (n) return n order by n.name desc skip 1 limit 2
MATCH (n)

集合与系统函数

list与list推导式

  1. List:在查询时多个节点或者关系返回的都有可能是List
  2. List推导式:本质是基于List列表创建一个语法结构支持映射和过滤函数
return range(1,10,2);
return range(1,10,2)[-1];
return range(1,10)[1..2];
return range(1,10)[..2];
return [i in range(0,10,2) where i%2=0 | i+1] as result
match (u1)-[f:Friend|Colleague*2]->(u2) return u1.name,u2.name,[t in f where type(t)= 'Colleague' | type(t)] as abc

计算函数

  1. count用于计算行的数量count(*) 用于计算匹配的行数,而count(expr)用于计算非空值的数量
  2. 使用聚合函数类似sql中的group by,聚合函数通常有多个输入值,然后基于它们计算初一个聚合值
  3. return n,count(*), 前者n不是一个聚合函数, 是一个分组键(类似group by n),根据不同的分组键匹配的子图将被分为不同的组
MATCH (n:User) return count(n),count(n.age),sum(n.age),avg(n.age),max(n.age),min(n.age)
MATCH (n:User)-[r]->(m:User) return type(r),count(r)

字符串函数

  1. 下面的函数都是针对字符串表达式,如果用于其它值,将会返回错误
return replace('hello','l','w'),substring('hello',2,4),lower(rtrim(ltrim(' Hello '))),split('h e l l o',' '),size(split('h e l l o',' ')) as size,reverse('hello world')

类型转化函数

  1. 可以采用toInt、toFloat、toString来进行类型的转化,如果转化失败返回为null
return toInt('3.14'),toInt('hello'),toFloat('300'),toString(3.14)

04_Cypher之进阶操作

Original: https://blog.csdn.net/lsqzedu/article/details/122583584
Author: lsqzedu
Title: 04_Cypher之进阶操作

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/556966/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球