Neo4j:入门基础(四)~ Cypher常用函数介绍

目录

Neo4j 节点、关系创建常用功能总结

 Cypher函数

一、断言(Predicate)函数

1. Exists

2. 检查集合元素

二、标量(Scalar)函数

1. 获得节点和关系的ID和属性

2. 关系

3. 列表相关

4. size()和length()函数

5.  数据类型转换

三、聚合函数

四、列表函数

1. 抽取元素形成列表

 2. 过滤列表元素

3. 获得列表

4.序列的生成和倒置 

5. 迭代计算列表


官方API:Cypher Query Language - Developer Guides (neo4j.com)

docs:Predicate functions - Neo4j Cypher Manual

示例: 

Neo4j:入门基础(四)~ Cypher常用函数介绍_第1张图片

Neo4j 节点、关系创建常用功能总结

参考:【知识图谱】Neo4j Cypher查询语言详解_ZSYL的博客-CSDN博客_cypher语言

修改关系label:

MATCH (a:Person{name:'Bob'})-[rel:KNOWS]->(b:Person{name:'Eskil'})
CREATE (a)-[rel2:MARRIED]->(b)
SET rel2=rel
WITH rel
DELETE rel

Neo4j:入门基础(四)~ Cypher常用函数介绍_第2张图片

路径长度匹配

在关系中,允许匹配特定路径长度的内容:

  • (n)-[*2]->(m):表示关系数量为2的3个节点的匹配,等价于(a)-[]->()-[]->(b)
  • (n)-[*2..4]->(m):匹配路径长度为2到4之间的路径
  • (n)-[*2..]->(m):匹配路径长度大于2的路径
  • (n)-[*..4]->(m)匹配路径长度小于4的路径
  • (n)-[*]->(m):匹配任意长度的路径

持续总结中。。。

Cypher函数

一、断言(Predicate)函数

       断言函数是对给定的输入返回true或者false的布尔函数。它们主要用于查询的WHERE部分过滤子图。

1. Exists

如果指定的模式存在于图中,或者特定的属性存在于节点、关系或Map中,那么函数返回True

例如,节点具有name属性,并check图中是否存在特定的模式:

Neo4j:入门基础(四)~ Cypher常用函数介绍_第3张图片

2. 检查集合元素

  • all()表示所有的元素都满足条件
  • any()表示至少一个元素满足条件,
  • none()函数表示没有一个元素满足条件,
  • single()表示只有一个元素满足条件

例如,ALL谓词表示,在路径中,所有节点都必须具有age属性,并且age属性值都必须大于30:

Neo4j:入门基础(四)~ Cypher常用函数介绍_第4张图片

ANY谓词表示,节点的array属性中至少有一个元素值是one:

Neo4j:入门基础(四)~ Cypher常用函数介绍_第5张图片  NONE谓词表示,在路径中,没有节点的age属性等于25:

Neo4j:入门基础(四)~ Cypher常用函数介绍_第6张图片

 SINGLE谓词表示,在路径中,只有一个节点的eyes属性是blue:

Neo4j:入门基础(四)~ Cypher常用函数介绍_第7张图片

二、标量(Scalar)函数

Scalar functions - Neo4j Cypher Manual

标量函数返回一个单值。 

变量函数返回标量值

1. 获得节点和关系的ID和属性

  • id():返回节点或关系的ID
  • properties():返回节点或关系的属性(Map)

 Neo4j:入门基础(四)~ Cypher常用函数介绍_第8张图片

Neo4j:入门基础(四)~ Cypher常用函数介绍_第9张图片

2. 关系

关系是由开始节点,结束节点和边构成的:

  • endNode(relationship):返回关系的结束节点
  • startNode(relationship):返回关系的开始节点
  • type(relationship):返回关系的类型

Neo4j:入门基础(四)~ Cypher常用函数介绍_第10张图片

3. 列表相关

列表是元素的有序序列,Cypher使用List来表示列表类型,应用于列表的函数有:

  • coalesce():返回列表中第一个非NULL的元素
  • head():返回列表中的第一个元素
  • last():返回列表中的最有一个元素
  • size():返回列表中元素的数量

例如,节点的array属性,

Neo4j:入门基础(四)~ Cypher常用函数介绍_第11张图片

Neo4j:入门基础(四)~ Cypher常用函数介绍_第12张图片

4. size()和length()函数

求长度的函数:

  • size(string):表示字符串中字符的数量,可以把字符串当作是字符的列表。
  • size(list):返回列表中元素的数量。
  • size(pattern_expression):也是统计列表中元素的数量,但是不是直接传入列表,而是提供模式表达式(pattern_expression),用于在匹配查询(Match query)中提供一组新的结果,这些结果是路径列表,size()函数用于统计路径列表中元素(即路径)的数量。

 Neo4j:入门基础(四)~ Cypher常用函数介绍_第13张图片

Neo4j:入门基础(四)~ Cypher常用函数介绍_第14张图片

Neo4j:入门基础(四)~ Cypher常用函数介绍_第15张图片

2. length(path):

返回路径的长度,即路径中关系的数量:

语法: length( path )   参数: path:返回路径的表达式

Neo4j:入门基础(四)~ Cypher常用函数介绍_第16张图片Neo4j:入门基础(四)~ Cypher常用函数介绍_第17张图片

5.  数据类型转换

  • toInteger:将实参转换为一个整数。字符串会被解析为一个整数。如果解析失败,将返回null。浮点数将被强制转换为整数。
  • toFloat:将实参转换为浮点数。字符串会被解析为一个浮点数。如果解析失败,将返回null。整数将被强制转换为浮点数。
  • toBoolean():将string、integer或者boolean数转化为布尔值

 Neo4j:入门基础(四)~ Cypher常用函数介绍_第18张图片

Neo4j:入门基础(四)~ Cypher常用函数介绍_第19张图片

三、聚合函数

聚合函数用于对查询的结果进行统计:

  • avg():计算均值
  • count(exp):用于计算非null值(value)的数量,使用 count(distinct exp)进行无重复非null值的计数,使用count(*):计算值或记录的总数量,包括null值
  • max(),min():求最大值和最小值,在计算极值时,null被排除在外,min(null)或max(null)返回null
  • sum():求和,在求和时,null被排除在外,sum(null)的结果是0
  • collect():把返回的多个值或记录组装成一个列表,collect(null)返回一个空的列表 在聚合计算中,可以引用分组键来对查询的结果进行分组聚合,例如,在return子句中,如果表达式不是聚合函数,那么该表达式是分组key,下面的表达式是按照type®分组,计算每个分组中记录的数量。

四、列表函数

1. 抽取元素形成列表

之前版本是extract函数:

  • extract函数的作用是从列表中抽取值,
  • extract(variable IN list | expression) :根据抽取的值组装成一个列表,返回一个列表

Neo4j:入门基础(四)~ Cypher常用函数介绍_第20张图片

目前版本4.x已弃用,改为列表表达式:

Neo4j:入门基础(四)~ Cypher常用函数介绍_第21张图片

 2. 过滤列表元素

之前版本是filter:

  • filter函数用于对列表中的元素进行过滤,
  • filter(variable IN list WHERE predicate) 把过滤后的元素组成一个列表,返回该列表:

Neo4j:入门基础(四)~ Cypher常用函数介绍_第22张图片

 目前版本4.x已弃用,改为列表表达式:

Neo4j:入门基础(四)~ Cypher常用函数介绍_第23张图片

3. 获得列表

keys(node):从节点、关系或Map的属性中抽取属性键

labels(node):节点标签的列表

nodes(path):从路径中获取所有节点的列表

relationships(path):从路径中获得所有的关系

Neo4j:入门基础(四)~ Cypher常用函数介绍_第24张图片 Neo4j:入门基础(四)~ Cypher常用函数介绍_第25张图片

4.序列的生成和倒置 

range()函数,用于生成一个有序的序列

  • range(start, end [, step]) reverse(list)

Neo4j:入门基础(四)~ Cypher常用函数介绍_第26张图片

reverse()函数把原始列表的元素进行倒置 

 Neo4j:入门基础(四)~ Cypher常用函数介绍_第27张图片

Neo4j:入门基础(四)~ Cypher常用函数介绍_第28张图片

5. 迭代计算列表

  • reduce()函数应用在列表上,对列表中的每个元素e进行迭代计算,在元素e上运行表达式(expression),把当前的结果存储在累加器中,进行迭代计算,并返回最终计算的标量结果:
  • reduce(accumulator = initial, e IN list | expression) :例如,初始的age值是0,对路径p中的所有节点,计算各个节点的age值的和:

Neo4j:入门基础(四)~ Cypher常用函数介绍_第29张图片

更多内容请参考:Functions - Neo4j Cypher Manual

你可能感兴趣的:(知识图谱,neo4j)