文章目录
- Create与Relationship
* - Merge VS Create
- 节点与关系的赋值
- FOREACH标记节点
- return
- 集合与系统函数
* - list与list推导式
- 计算函数
- 字符串函数
- 类型转化函数
; Create与Relationship
Merge VS Create
- Create:用于创建图元素,节点与关系
- 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
节点与关系的赋值
- with 语句将分段的查询部分连接在一起,查询结果从一部分以管道的形式传递给另外一部分作为开始点
- 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标记节点
- 可以使用FOREACH来更新其中的数据,括号中的变量是与外部分开的,这意味着FOREACH中创建的变量不能用于该语句之外
- 注意match后面不能直接更extract函数(可以查看异常提示),它用于return关键字,foreach语法格式与extract相同
- 在管道的右边可以执行任何的 更新命令,包括CREATE、DELETE、FOREACH
MATCH (n:User{name:'李四'}) foreach (p in ['C','D','E'] | create (n)-[:Friend]->(new:User{name:p}))
return
- return语句有三个子语句,分别为skip,limit,order by
- return * 代表返回所有
MATCH (n) return n order by n.name desc skip 1 limit 2
MATCH (n)
集合与系统函数
list与list推导式
- List:在查询时多个节点或者关系返回的都有可能是List
- 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
计算函数
- count用于计算行的数量count(*) 用于计算匹配的行数,而count(expr)用于计算非空值的数量
- 使用聚合函数类似sql中的group by,聚合函数通常有多个输入值,然后基于它们计算初一个聚合值
- 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)
字符串函数
- 下面的函数都是针对字符串表达式,如果用于其它值,将会返回错误
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')
类型转化函数
- 可以采用toInt、toFloat、toString来进行类型的转化,如果转化失败返回为null
return toInt('3.14'),toInt('hello'),toFloat('300'),toString(3.14)
Original: https://blog.csdn.net/lsqzedu/article/details/122583584
Author: lsqzedu
Title: 04_Cypher之进阶操作
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/556966/
转载文章受原作者版权保护。转载请注明原作者出处!