Neo4j学习之路03——函数

Cypher函数分类:

  • 断言函数
  • 标量函数
  • 列表函数
  • 数学函数
  • 字符串函数

断言函数:

对给定的输入返回true或false的布尔函数,主要用于查询WHERE的部分过滤子图

ALL:判断一个断言是否适用于列表中的所有元素

// 返回路径中的所有结点都有一个至少大于30的age属性
MATCH p = (a)-[*1..3]->(b)
WHERE a.name = 'Alice' AND b.name = 'Daniel' AND ALL(x IN nodes(p) WHERE x.age > 30)
RETURN p

ANY():判断是否一个断言至少适用于列表中的一个元素

// 返回路径中的所有节点的array数组属性中至少有一个值为'one'
MATCH (a)
WHERE a.name = 'Eskil' AND ANY(x IN a.array WHERE x = 'one')
RETURN a

NONE():断言不适合用于列表中的任何元素则返回true

// 返回匹配到的路径中没有节点的age属性为25
MATCH p = (n)-[*1..3]->(b)
WHERE n.name = 'Alice' AND NONE(x IN nodes(p) WHERE x.age = 25)
RETURN p

SINGLE():断言刚好只适用于列表中的某一元素,则返回true

// 返回匹配到的路径中刚好只有一个节点的eyes属性值为blue
MATCH p = (n)-->(b)
WHERE n.name = 'ALICE' AND SINGLE(var IN nodes(p) WHERE var.eyes = 'blue')
RETURN p

EXISTS():如果数据库中存在该模式或节点存在该属性时,返回true

MATCH (n)
WHERE EXISTS(n.name)

标量函数

返回一个单值

size():返回列表中元素的个数

RETURN size(['Alice', 'Bob']) AS col

// 返回模式表达式匹配到的查询结果集,计算的是结果集元素的个数
MATCH(a)
WHERE a.name = 'Alice'
RETURN size((a)-->()-->()) AS fof

lenth():返回路径,字符串的长度

// 返回匹配到路径的长度
MATCH p = (a)-->(b)-->(c)
WHERE a.name = 'Alice'
RETURN length(p)

// 返回字符串的长度
MATCH (a)
WHERE length(a.name) > 6
RETURN length(a.name)

type():返回关系的类型

MATCH (n)-[r]->()
WHERE n.name = 'Alice'
RETURN type(r)

id:返回元素数据或关系的id标识

MATCH (a)
RETURN id(a)

coalesce():返回表达式列表中第一个非空的值,如果所有的实参都为空,则返回null

MATCH (a)
WHERE a.name = 'Alice'
RETURN coalesce(a.hairColor, a.eyes)

head():返回列表中的第一个元素

last():返回列表中的最后一个元素

// 返回了查找路径中的第一个节点
MATCH (a)
WHERE a.name = 'Eskil'
RETURN a.array, head(a.array)

// 返回了查找路径中的最后一个节点
MATCH (a)
WHERE a.name = 'Eskil'
RETURN a.array, last(a.array)

startNode():返回一个关系的开始节点

endNode():返回一个关系的结束节点

MATCH (n:Person{name:'Tom Hanks'})-[r]-(m)
RETURN startNode(r), endNode(r)

properties():将实参转换成属性值的map,实参可以是节点或关系

// 返回匹配到节点的所有属性名与属性值
CREATE (p:Person{name:'Stefan', city:'Berlin'})
RETURN properties(p)

toInt():强制转换成整数,若解析失败,则返回null

toFloat():强制转换成浮点数,若解析失败则返回null

RETURN toInt('42'), toFloat('24')

列表函数

返回值为列表的函数

nodes():返回查询路径中所有的节点

relationships():返回一条路径中所有的关系

labels():返回查询元素中所有的标签

keys():返回节点或关系上所有的属性名

extract():从节点或关系列表中返回单个属性或者某个函数的值,这将遍历整个列表,针对每一个元素运行表达式,并返回结果列表

MATCH p = (a)-->(b)-->(c)
WHERE a.name = 'Alice' AND b.name = 'Bob' AND c.name = 'Daniel'
RETURN extract(n IN nodes(p)|n.age) AS extracted

filter():返回列表中满足断言的所有元素

// 返回array属性元素字符数为3的列表
MATCH(a)
WHERE a.name = 'Eskil'
RETURN filter(x IN a.array WHERE size(x) = 3)

tail():返回除了首元素以外的所有元素

range():返回一个范围内的数字,步长默认为1,包含起始的边界值

RETURN range(0, 10, 2)

reduce():对列表中的元素执行一个表达式并将结果存入累加器中

// 将路径中所有节点的age都加起来返回一个单值
MATCH p = (a)-->(b)-->(c)
WHERE a.name = 'Alice' AND b.name = 'Bob' AND c.name = 'Daniel'
RETURN reduce(count = 0, n IN nodes(p)|count + n.age) AS reduction

数学函数:

进行数学运算的函数

abs():返回数值的绝对值

ceil():返回大于或小于等于实参的最小整数

floor():返回小于或等于表达式的最大整数

round():返回距离表达式值最近的整数

sign():返回一个数值的正负,正为1,复为-1,零则为0

rand():返回[0,1)之间的一个随机数

sqrt():平方

......


字符串函数:

字符串函数都只是针对字符串表达式,用于其它值则会返回错误,而toString()可以接受数字值与布尔值

replace():字符串替换

RETURN replace("hello", "l", "w")

substring():字符串子串,接受一个字符串,开始索引位置,长度

RETURN substring('hello', 1, 3)

left():返回左半部分指定长度的字符串

right():返回右半部分指定长度的字符串

RETURN right('hello', 3)

ltrim():返回原字符串移除左侧的空白字符后的字符串

rtrim():返回移除原字符串右侧的空白字符字符串

split():返回以指定模式分隔后的字符串序列

RETURN split('one,two', ',')

reverse():返回原字符串的倒序字符串

toString():将实参转换成字符串

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值