附加的 Cypher 功能

虽然 GQL 标准包含了 Cypher® 的许多功能,但 Cypher 包含 GQL 中不具备的附加功能,目前也没有 GQL 替代方案。本页面介绍了这些 Cypher 功能。

子句

Cypher 功能 描述

从 CSV 文件导入数据。

确保图中存在某个模式。该模式要么已经存在,要么需要被创建。

子查询

Cypher 功能 描述

CALL 子查询在独立的内部事务中执行,生成中间提交。

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

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

用于判断图中是否存在至少一次指定的模式

值和类型

Cypher 功能 描述

空间值。

映射值 - GQL 中的等价物是 Records。

理解式和投影

Cypher 功能 描述

用于根据现有列表创建 LIST 的语法构造。

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

用于根据模式匹配创建 LIST 的语法构造。

动态查询

节点标签、关系类型、属性和 CSV 列可以使用 Cypher 动态引用。这使得查询更加灵活,并降低了 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 的数据库名称。

生成式 AI 函数

Cypher 功能 描述

为单个值生成向量嵌入。

图函数

Cypher 功能 描述

返回具有给定元素 ID 的图引用。它仅在 USE 子句中受支持。从 Neo4j 5.26 开始,它在标准数据库和复合数据库上均受支持。在早期版本中,它仅在复合数据库上受支持。

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

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

返回与图关联的属性 MAP

列表函数

Cypher 功能 描述

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

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

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

返回一个 LIST<INTEGER>,其中包含指定范围内的所有 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。

检查 STRINGMAPLIST<ANY> 是否为空。

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

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

标量函数

Cypher 功能 描述

返回 RELATIONSHIP 的结束 NODE

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

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

返回一个 MAP,其中包含 NODERELATIONSHIPMAP 的所有属性。

生成一个随机 UUID。

返回 RELATIONSHIP 的起始 NODE

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

返回给定表达式计算出的最精确值类型的 STRING 表示形式。

空间函数

Cypher 功能 描述

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

返回一个 FLOAT,表示同一 CRS 中任意两点之间的距离。如果点位于 WGS 84 CRS 中,则函数返回测地距离(即沿地球曲面最短路径)。如果点位于笛卡尔 CRS 中,则函数返回欧几里德距离(即平面空间中最短的直线距离)。

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

字符串函数

Cypher 功能 描述

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

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

返回一个 LIST<STRING>,它是将给定 STRING 围绕给定分隔符匹配项分割而成的结果。

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

三角函数

Cypher 功能 描述

返回一组坐标的反正切值(以弧度为单位)。

返回一个数字的半正矢。

返回数学常数 pi。

时间持续时间函数

Cypher 功能 描述

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

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

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

时间瞬时函数

Cypher 功能 描述

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

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

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

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

给定自 Epoch 开始以来的秒和纳秒,创建 ZONED DATETIME

给定自 Epoch 开始以来的毫秒,创建 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 功能 描述

返回一个 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 运行时有:分槽式、流水线式、并行式。

CYPHER inferSchemaParts=off

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

管理

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

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

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

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

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

© . All rights reserved.