运算符

本页面提供了 Cypher® 中可用运算符的概述。运算符是一个专门的执行模块,负责在查询执行计划中对数据进行某种类型的转换,然后将其传递给下一个运算符,直到匹配到所需的图模式。

有关如何理解执行计划(以及运算符在其中扮演的角色)的信息,请参阅 了解执行计划

有关每个运算符的更多信息,请参阅 运算符详解

运算符摘要

此表包含按字典顺序排列的所有执行计划运算符。

  • 叶子运算符在大多数情况下会找到执行查询所需的起始节点和关系。

  • 更新运算符用于更新图的查询。

  • 急切运算符 累积所有行 然后将其传递给下一个运算符。

名称 描述 叶子? 更新? 注意事项

从节点存储中读取所有节点。

测试模式不存在。

执行嵌套循环。测试模式谓词不存在。

执行嵌套循环。从左侧和右侧运算符产生行。

指示要作为参数用于 Apply 运算符右侧的变量。

用于确保逐行语义。限制 Cypher 运行时 不以较大的块批量执行操作。

确保没有违反节点属性唯一性约束。

确保没有违反关系属性唯一性约束。

在 5.8 中引入

用于确保没有违反属性唯一性约束。

读取节点或关系属性并将其缓存。

生成左侧和右侧运算符输入的笛卡尔积。

创建节点和关系。

为节点或关系创建索引。

为节点或关系创建约束。

删除节点或关系。

删除节点及其关系。

获取数据库中的所有关系及其起始和结束节点。

通过元素 ID(通过函数 elementId() 指定)从关系存储中读取一个或多个关系,并生成关系以及关系的源节点和目标节点。

通过 ID(通过函数 Id() 指定)从关系存储中读取一个或多个关系,并生成关系以及关系的源节点和目标节点。

检查索引中存储的所有值,搜索包含特定 STRING 的条目;例如,在包含 CONTAINS 的查询中。

检查索引中存储的所有值,搜索以特定 STRING 结尾的条目;例如,在包含 ENDS WITH 的查询中。

检查索引中存储的所有值,返回具有特定关系类型和指定属性的所有关系及其起始和结束节点。

使用索引查找关系及其起始和结束节点。

使用索引查找关系及其起始和结束节点,其中属性的值与给定的前缀 STRING 匹配。

从关系类型索引中获取具有特定类型的全部关系及其起始和结束节点。

从关系类型索引中获取具有至少一个提供类型的全部关系及其起始和结束节点。

从传入的行流中删除重复的行。

Eager

检查约束是否已存在,如果存在则停止执行,否则继续。

检查索引是否已存在,如果存在则停止执行,否则继续。

使用其名称删除约束。

使用其名称删除索引。

出于隔离目的,Eager 确保影响后续操作的操作在继续执行之前针对整个数据集完全执行。

Eager

评估分组表达式。

Eager

急切加载所有传入数据并将其丢弃。

Eager

返回一个没有列的单行。

ExhaustiveLimit 运算符类似于 Limit 运算符,但始终会耗尽输入。在组合 LIMIT 和更新时使用。

遍历给定节点的传入或传出关系。

查找两个节点之间的所有关系。

过滤来自子运算符的每一行,仅传递将谓词计算为 true 的行。

执行嵌套循环。生成左侧运算符的行并丢弃右侧运算符的行。

从节点标签索引中获取具有所有提供的标签的所有节点。

在 5.5 版本中引入

执行嵌套循环。在包含多个模式谓词的查询中测试模式谓词的不存在。

执行嵌套循环。测试与其他谓词组合的模式谓词的不存在。

执行嵌套循环。测试与其他谓词组合的模式谓词的存在。

执行嵌套循环。在包含多个模式谓词的查询中测试模式谓词的存在。

返回来自传入输入的前 n 行。

将数据从 CSV 源加载到查询中。

类似于 Merge 运算符,但在必要时会锁定创建关系时的起始节点和结束节点。

Merge 运算符将读取或创建节点和/或关系。

使用多个索引查找查找节点。

通过函数 elementId() 从节点存储中读取一个或多个节点 ID。

在 5.3 版本中引入

通过函数 id() 从节点存储中读取一个或多个节点 ID。

从节点标签索引中获取具有特定标签的所有节点。

使用计数存储来回答有关节点计数的问题。

对节点 ID 执行哈希连接。

Eager

检查索引中存储的所有值,搜索包含特定 STRING 的条目。

检查索引中存储的所有值,搜索以特定 STRING 结尾的条目。

检查索引中存储的所有值,返回具有特定标签和指定属性的所有节点。

使用索引查找查找节点。

使用索引查找查找节点,其中属性的值与给定的前缀 STRING 匹配。

执行左外部哈希连接。

Eager

执行右外部哈希连接。

Eager

在唯一索引中使用索引查找查找节点。

在唯一索引中使用索引查找查找节点,其中属性的值与给定的前缀 STRING 匹配。

负责清理 Repeat(Trail) 生成的状态。它仅在 Repeat(Trail) 之后直接计划。

在 5.9 版本中引入

如果其源未返回任何数据,则生成所有列都设置为 null 的单行。

遍历给定节点的关系,如果谓词未满足,则生成一个包含关系和结束节点设置为 null 的单行。

遍历两个节点之间的所有关系,如果未找到匹配的关系,则生成一个包含关系和结束节点设置为 null 的单行(起始节点是度数最小的节点)。

类似于 EagerAggregation 运算符,但依赖于传入行的顺序。它不是急切的。

类似于 DISTINCT 运算符,但依赖于传入行的顺序。

如果已经存在排序,则按多列对行进行排序。

如果已经存在排序,则返回按多列排序的前 n 行。

由并行运行时用于从节点存储中读取所有节点。

在 5.17 版本中引入

由并行运行时用于从数据库中获取所有关系及其起始节点和结束节点。

在 5.17 版本中引入

由并行运行时用于检查索引中存储的所有值。它返回具有特定类型和指定属性的所有关系,以及它们的起始节点和结束节点。

在 5.17 版本中引入

使用并行索引查找查找关系及其起始节点和结束节点。

在 5.17 版本中引入

使用并行索引查找查找关系,其中指定关系类型属性的值在给定范围内。它还会查找这些关系的起始节点和结束节点。

在 5.17 版本中引入

使用并行扫描从关系类型索引中获取具有特定类型的所有关系。它还会获取这些关系的起始节点和结束节点。

在 5.17 版本中引入

使用并行扫描从关系类型索引中获取具有至少一个提供的类型的所有关系。它还会获取这些关系的起始节点和结束节点。

在 5.17 版本中引入

由并行运行时用于从节点标签索引中获取具有特定标签的所有节点。

在 5.17 版本中引入

由并行运行时用于检查索引中存储的所有值,返回具有特定标签和指定属性的所有节点。

在 5.17 版本中引入

由并行运行时用于使用索引查找查找节点。

在 5.17 版本中引入

使用并行索引查找查找节点,其中指定属性的值在给定范围内。

在 5.17 版本中引入

由并行运行时用于从节点标签索引中获取具有所有第一组提供的标签且不具有第二组提供的标签的所有节点。

在 5.21 版本中引入

由并行运行时用于从数据库中获取所有关系及其起始节点和结束节点。

在 5.17 版本中引入

由并行运行时用于检查索引中存储的所有值,返回具有特定关系类型和指定属性的所有关系。它还会返回这些关系的起始节点和结束节点。

在 5.17 版本中引入

使用并行索引查找查找关系及其起始节点和结束节点。

在 5.17 版本中引入

使用并行索引查找查找关系,其中指定关系属性类型的值在给定范围内。它还会查找这些关系的起始节点和结束节点。

在 5.17 版本中引入

由并行运行时用于从关系类型索引中获取具有特定类型的所有关系。它还会获取这些关系的起始节点和结束节点。

在 5.17 版本中引入

由并行运行时用于从关系类型索引中获取具有至少一个提供的类型的所有关系。它还会获取这些关系的起始节点和结束节点。

在 5.17 版本中引入

由并行运行时用于从节点标签索引中获取具有至少一个提供的标签的所有节点。

在 5.17 版本中引入

由并行运行时用于返回列表中每个项目的单行。

在 5.17 版本中引入

调用过程。

准备结果以便用户可以使用。

投影关系的起始节点和结束节点。

评估一组表达式,生成包含其结果的行。

使用计数存储来回答有关关系计数的问题。

解决量化路径模式。

在 5.9 版本中引入

从节点中删除标签。

执行嵌套循环。执行模式表达式或模式理解。

执行嵌套循环。如果表达式谓词计算为 false,则测试模式谓词的不存在。

执行嵌套循环。如果表达式谓词计算为 false,则测试模式谓词的存在。

执行嵌套循环。测试模式谓词的存在。

在节点上设置标签。

从节点上的映射中设置属性。

在节点或关系上设置属性。

在节点或关系上设置多个属性时使用。

从关系上的映射中设置属性。

查找两个先前匹配的节点变量之间的一条或所有最短路径。

列出可用的约束。

列出可用的函数。

列出可用的索引。

列出可用的过程。

列出可用的配置设置。

列出当前服务器上可用的事务。

跳过传入行中的 n 行。

按提供的键对行进行排序。

Eager

查找从先前匹配的节点变量到先前未匹配的端点的所有最短路径。

在 5.21 版本中引入

查找两个先前匹配的节点变量之间的最短路径。它使用双向广度优先搜索 (BFS) 算法,该算法同时执行两次 BFS 调用,一次从左侧边界节点,一次从右侧边界节点。

在 5.21 版本中引入

工作方式类似于 Foreach 运算符,但仅用于执行子查询。

从节点标签索引中获取所有具有第一组提供的标签且不具有第二组提供的标签的节点。

在 5.21 版本中引入

终止具有给定 ID 的事务。

Top

返回按提供的键排序的前 'n' 行。

Eager

类似于 Apply 运算符,但在指定行数后会提交当前事务。

类似于 Foreach 运算符,但在指定行数后会提交当前事务。

TriadicFilter 结合使用以解决三角形查询。

TriadicBuild 结合使用以解决三角形查询。

解决三角形查询,例如非常常见的“查找我的朋友的朋友,但不是我已有的朋友”。

获取数据库中的所有关系及其起始和结束节点。

从关系存储中读取一个或多个关系,关系 ID 由函数 ElementId() 指定。由于方向未指定,因此每个关系都会产生两行,这是由于交替组合起始节点和结束节点的结果。

从关系存储中读取一个或多个关系,关系 ID 由函数 Id() 指定。由于方向未指定,因此每个关系都会产生两行,这是由于交替组合起始节点和结束节点的结果。

检查索引中存储的所有值,搜索包含特定 STRING 的条目;例如,在包含 CONTAINS 的查询中。

检查索引中存储的所有值,搜索以特定 STRING 结尾的条目;例如,在包含 ENDS WITH 的查询中。

检查索引中存储的所有值,返回具有特定关系类型和指定属性的所有关系及其起始和结束节点。

使用索引查找关系及其起始和结束节点。

使用索引查找关系及其起始和结束节点,其中属性的值与给定的前缀 STRING 匹配。

从关系类型索引中获取具有特定类型的全部关系及其起始和结束节点。

从关系类型索引中获取具有至少一个提供类型的全部关系及其起始和结束节点。

将右侧运算符的结果与左侧运算符的结果连接起来。

从节点标签索引中获取所有至少具有一个提供标签的节点。

为列表中的每个项目返回一行。

对任意值执行哈希连接。

Eager

从给定节点遍历可变长度关系。

查找两个节点之间的所有可变长度关系。

从给定节点遍历可变长度关系,并且只返回唯一的结束节点。

从给定节点遍历可变长度关系,并且只返回唯一的结束节点。

数据库命中

每个运算符都会向存储引擎发送请求以执行工作,例如检索或更新数据。数据库命中 (DBHits) 是此存储引擎工作的抽象单位。

这些都是触发一个或多个数据库命中的所有操作

  • 创建操作

    • 创建一个节点。

    • 创建一个关系。

    • 创建一个新的节点标签。

    • 创建一个新的关系类型。

    • 为具有相同名称的属性键创建一个新的 ID。

  • 删除操作

    • 删除一个节点。

    • 删除一个关系。

  • 更新操作

    • 在一个节点上设置一个或多个标签。

    • 从节点中删除一个或多个标签。

  • 节点特定操作

    • 通过其 ID 获取节点。

    • 获取节点的度数。

    • 确定节点是否密集。

    • 确定节点上是否设置了标签。

    • 获取节点的标签。

    • 获取节点的属性。

    • 获取现有节点标签。

    • 通过其 ID 获取标签的名称,或通过其名称获取其 ID。

  • 关系特定操作

    • 通过其 ID 获取关系。

    • 获取关系的属性。

    • 获取现有关系类型。

    • 通过其 ID 获取关系类型的名称,或通过其名称获取其 ID。

  • 一般操作

    • 通过其 ID 获取属性键的名称,或通过键名称获取其 ID。

    • 通过索引查找或索引扫描查找节点或关系。

    • 在可变长度扩展中查找路径。

    • 查找最短路径。

    • 向计数存储请求值。

  • 模式操作

    • 添加索引。

    • 删除索引。

    • 获取索引的引用。

    • 创建约束。

    • 删除约束。

  • 调用过程。

  • 调用用户定义函数。