额外的 Cypher 特性

虽然 GQL 标准 纳入了 Cypher® 中的许多功能,但 Cypher 仍包含一些不属于 GQL 且目前尚无 GQL 等效替代方案的额外特性。本页面介绍了这些 Cypher 特性。

子句

Cypher 特性 描述

从 CSV 文件导入数据。

确保图中存在某种模式。如果模式不存在,则需要创建它。

子查询

Cypher 特性 描述

在单独的内部事务中执行 CALL 子查询,从而产生中间提交。

用于根据子查询返回的行创建一个列表。

用于计算子查询返回的行数。

用于发现图中是否存在至少一个指定的模式。

值与类型

Cypher 特性 描述

Map 值 - GQL 中的等效项是 Records(记录)。

空间值。

向量值,定义了坐标类型和维度。

推导式与投影

Cypher 特性 描述

用于基于现有列表创建 LIST 的语法结构。

从节点、关系和其他 MAP 值中构建 MAP 投影。

用于基于模式匹配创建 LIST 的语法结构。

动态查询

在 Cypher 中可以动态引用节点标签、关系类型、属性和 CSV 列。这允许进行更灵活的查询,并降低 Cypher 注入的风险。(有关 Cypher 注入的更多信息,请参阅 Neo4j 知识库 → 防御 Cypher 注入)。

Cypher 特性 描述
MATCH (n:$($label)),
      ()-[r:$($type)]->()
CREATE (n:$($label)),
       ()-[r:$($type)]->()
MERGE (n:$($label)),
       ()-[r:$($type)]->()
LOAD CSV WITH HEADERS FROM 'file:///artists-with-headers.csv' AS line
CREATE (n:$(line.label) {name: line.Name})
MATCH (n)
SET n[$key] = value
MATCH (n:Label)
SET n:$(n.property)
MATCH (n {name: 'Peter'})
REMOVE n:$($label)
MATCH (n {name: 'Peter'})
REMOVE n:$($label)

函数

数据库函数

Cypher 特性 描述

根据给定的元素 ID 解析数据库名称。

图函数

Cypher 特性 描述

返回具有给定元素 ID 的图引用。仅在 USE 子句中受支持。

返回给定名称的图引用。仅在复合数据库上的 USE 子句中受支持。

列出当前数据库中图的名称。

返回与图关联的属性 MAP

列表函数

Cypher 特性 描述

返回一个包含 NODERELATIONSHIPMAP 的所有属性名称的 STRING 表示形式的 LIST<STRING>

返回一个 LIST<STRING>,其中包含 NODE 的所有标签的 STRING 表示形式。

返回一个 LIST<NODE>,其中包含 PATH 中的所有 NODE 值。

返回一个包含指定范围内所有 INTEGER 值的 LIST<INTEGER>

LIST<ANY> 的各个元素运行表达式,并将表达式的结果存储在累加器中。

返回一个 LIST<RELATIONSHIP>,其中包含 PATH 中的所有 RELATIONSHIP 值。

返回一个 STRINGLIST<ANY>,其中给定 STRINGLIST<ANY> 中的所有字符或元素顺序已被反转。

返回 LIST<ANY> 中除第一个元素外的所有元素。

将值组成的 LIST<ANY> 转换为 LIST<BOOLEAN>。如果有任何值无法转换为 BOOLEAN,则返回的 LIST<BOOLEAN> 中该位置将为 null。

LIST<ANY> 转换为 LIST<FLOAT> 值。如果任何值无法转换为 FLOAT,则在返回的 LIST<FLOAT> 中它们将为 null。

LIST<ANY> 转换为 LIST<INTEGER> 值。如果任何值无法转换为 INTEGER,则在返回的 LIST<INTEGER> 中它们将为 null。

INTEGERFLOATBOOLEANPOINT 或时间类型(例如 DATEZONED TIMELOCAL TIMEZONED DATETIMELOCAL DATETIMEDURATION)的值转换为 STRING,如果无法转换,则返回 null。

LOAD CSV 函数

Cypher 特性 描述

返回 LOAD CSV 正在使用的文件的绝对路径。

返回 LOAD CSV 当前正在使用的行号。

对数函数

Cypher 特性 描述

e()

返回自然对数的底数 e。

数值函数

Cypher 特性 描述

返回给定的 INTEGERFLOAT 是否为 NaN。

返回一个介于 0(含)到 1(不含)之间的随机 FLOAT

返回四舍五入到最接近 INTEGER 的数值。

返回 INTEGERFLOAT 的符号:如果数字为 0,则返回 0;如果为负数,则返回 -1;如果为正数,则返回 1。

谓词函数

Cypher 特性 描述

如果谓词对给定 LIST<ANY> 中的所有元素成立,则返回 true。

如果在给定 LIST<ANY> 的元素上逐步评估值的过程中,累积的结果在每一步都满足指定的谓词,则返回 true。当该列表是量化路径模式中定义的组变量时,它允许对不满足谓词的路径进行早期修剪。

如果谓词对给定 LIST<ANY> 中的至少一个元素成立,则返回 true。

检查 STRINGMAPLIST<ANY> 是否为空。

如果谓词对给定 LIST<ANY> 中的任何元素都不成立,则返回 true。

如果谓词对给定 LIST<ANY> 中的恰好一个元素成立,则返回 true。

标量函数

Cypher 特性 描述

返回 RELATIONSHIP 的结束 NODE

返回 LIST<ANY> 中的第一个元素。

返回 LIST<ANY> 中的最后一个元素。

返回一个包含 NODERELATIONSHIPMAP 的所有属性的 MAP

生成一个随机 UUID。

返回 RELATIONSHIP 的起始 NODE

返回 RELATIONSHIP 类型的 STRING 表示形式。

返回给定表达式求值结果的最精确值类型的 STRING 表示形式。

空间函数

Cypher 特性 描述

返回一个 2D 或 3D 点对象,该对象由笛卡尔坐标系或 WGS 84 地理坐标系中的两个或三个坐标值给定。

返回一个表示同一坐标参考系中任意两点之间距离的 FLOAT。如果这些点位于 WGS 84 坐标系中,该函数返回测地距离(即地球弯曲表面上的最短路径)。如果这些点位于笛卡尔坐标系中,该函数返回欧几里得距离(即平坦平面空间中的最短直线距离)。

如果提供的点在两个提供的点定义的边界框内,则返回 true。

字符串函数

Cypher 特性 描述

返回一个 STRING,其中所有出现的指定搜索 STRING 已被另一个(指定)替换 STRING 替换。

返回一个 STRINGLIST<ANY>,其中给定 STRINGLIST<ANY> 中的所有字符或元素顺序已被反转。

返回通过在给定的定界符处分割给定 STRING 而产生的 LIST<STRING>

返回给定 STRING 的子字符串,从基于 0 的索引处开始。

三角函数

Cypher 特性 描述

返回以弧度表示的一组坐标的反正切值 (atan2)。

返回一个数字的一半正矢值。

返回数学常数 pi。

时间段函数

Cypher 特性 描述

以天为单位计算 from 时刻(含)和 to 时刻(不含)之间的 DURATION

以月为单位计算 from 时刻(含)和 to 时刻(不含)之间的 DURATION

以秒为单位计算 from 时刻(含)和 to 时刻(不含)之间的 DURATION

即时时间函数

Cypher 特性 描述

使用实时时钟返回当前的 DATE 瞬时值。

使用语句时钟返回当前的 DATE 瞬时值。

使用事务时钟返回当前的 DATE 瞬时值。

使用事务时钟返回当前的 DATE 瞬时值。

给定纪元开始后的秒数和纳秒数,创建一个 ZONED DATETIME

给定纪元开始后的毫秒数,创建一个 ZONED DATETIME

使用实时时钟返回当前的 ZONED DATETIME 瞬时值。

使用语句时钟返回当前的 ZONED DATETIME 瞬时值。

使用事务时钟返回当前的 ZONED DATETIME 瞬时值。

使用指定的单位将给定的时间值截断为 ZONED DATETIME 瞬时值。

使用实时时钟返回当前的 LOCAL DATETIME 瞬时值。

使用语句时钟返回当前的 LOCAL DATETIME 瞬时值。

使用事务时钟返回当前的 LOCAL DATETIME 瞬时值。

使用指定的单位将给定的时间值截断为 LOCAL DATETIME 瞬时值。

使用实时时钟返回当前的 LOCAL TIME 瞬时值。

使用语句时钟返回当前的 LOCAL TIME 瞬时值。

使用事务时钟返回当前的 LOCAL TIME 瞬时值。

使用指定的单位将给定的时间值截断为 LOCAL TIME 瞬时值。

使用实时时钟返回当前的 ZONED TIME 瞬时值。

使用语句时钟返回当前的 ZONED TIME 瞬时值。

使用事务时钟返回当前的 ZONED TIME 瞬时值。

使用指定的单位将给定的时间值截断为 ZONED TIME 瞬时值。

时间格式化函数

Cypher 特性 描述

返回 ISO 格式的 STRING 或按提供的模式格式化的 STRING 形式的时间值。

向量函数

Cypher 特性 描述

返回一个 FLOAT,表示基于余弦算法的参数向量之间的相似度。

返回一个 FLOAT,表示基于欧几里得距离算法的参数向量之间的相似度。

索引

Cypher 特性 描述

Neo4j 的默认索引。支持大多数类型的谓词。

解析操作 STRING 值的谓词。针对使用 STRING 运算符 CONTAINSENDS WITH 进行过滤的查询进行了优化。

解析关于空间 POINT 值的谓词。针对在距离或边界框内进行过滤的查询进行了优化。

仅解析节点标签和关系类型谓词(即它们无法解析任何过滤属性的谓词)。

支持在 STRING 属性内容中进行搜索,并支持查询字符串与数据库中存储的 STRING 值之间的相似度比较。

通过将节点或属性表示为多维空间中的向量,实现相似度搜索和复杂的分析查询。

Cypher 允许使用索引提示来影响规划器生成执行计划。索引提示通过 USING 关键字指定。

约束

GQL 支持 GRAPH TYPES 作为约束图模式的一种方式,但不提供对单个约束的支持。

Cypher 特性 描述

确保组合属性值对于所有具有特定标签的节点或所有具有特定类型的关系都是唯一的。

确保属性对于所有具有特定标签的节点或所有具有特定类型的关系都存在。

确保属性对于所有具有特定标签的节点或所有具有特定类型的关系都具有所需的属性类型。

确保所有属性都存在,并且对于所有具有特定标签的节点或所有具有特定类型的关系,组合属性值都是唯一的。

运算符

Cypher 特性 描述

STRING 比较运算符。

IN

用于 LIST 值的 IN 谓词。

查询优化

Cypher 特性 描述

可选地放在查询之前以生成执行计划。EXPLAIN 仅生成执行计划但不运行查询;PROFILE 则会两者兼顾。

CYPHER runtime=parallel

Cypher 允许设置查询的 运行时,从而决定查询的执行方式。可用的 Cypher 运行时包括:slotted, pipelined, parallel。

CYPHER inferSchemaParts=off

Cypher 允许设置许多查询选项。有关更多信息,请参阅 查询选项

管理

Cypher 管理命令的文档位于 Neo4j 的 操作手册 中。
Cypher 特性 描述

用于 CREATESHOWALTERDROP 标准数据库和复合数据库的命令。

用于 CREATESHOWALTERDROP 数据库别名的命令。

用于管理集群中服务器及分配给它们的数据库的命令。

用于管理用户、角色和权限的命令。