弃用、新增和兼容性

Cypher® 是一种不断发展的语言。语言功能不断添加,偶尔一些功能会被弃用并随后移除。

本节列出了在不同 Cypher 版本中已移除、弃用、添加或扩展的所有功能。还指出了弃用和移除功能的替换语法。

Neo4j 5.25

弃用功能

功能 详情

功能 已弃用

CREATE DATABASE db OPTIONS { existingDataSeedInstance: ... }

CREATE DATABASE 选项 existingDataSeedInstance 已弃用,并替换为选项 existingDataSeedServer。功能保持不变。

更新的功能

功能 详情

功能 已更新

CREATE (n:Label {property: 'name'}),
()-[r:REL_TYPE]->()

Neo4j 的 块格式 现在实现了 GQL 的 对标识符最大长度的限制。

标识符的最大限制设置为 16,383 个字符。这意味着节点标签、关系类型和属性键不能包含超过 16,383 个字符。

新功能

功能 详情

功能 新增

CREATE DATABASE db OPTIONS { existingDataSeedServer: ... }

选项 existingDataSeedServer 已添加到 CREATE DATABASE 中。功能与已弃用的选项 existingDataSeedServer 相同,后者被此选项替换。

Neo4j 5.24

新功能

功能 详情

功能 新增

MATCH (t:Team)
OPTIONAL CALL (t) {
  MATCH (p:Player)-[:PLAYS_FOR]->(t)
  RETURN collect(p) as players
}
RETURN t AS team, players
OPTIONAL CALL db.labels() YIELD label
RETURN label

引入了 OPTIONAL CALL,用于有条件地执行 过程子查询 CALL。类似于 OPTIONAL MATCHOPTIONAL CALL 生成的任何空行都将返回 null,并且不会影响过程或子查询评估的其余部分。

功能 新增

MATCH (n)
RETURN n.name AS names OFFSET 2

引入了 OFFSET,它是 SKIP 的 GQL 兼容同义词。

有关详细信息,请参阅 OFFSET 作为 SKIP 的同义词

功能 新增

MATCH (n)
ORDER BY n.name DESC
OFFSET 3
LIMIT 2
RETURN collect(n.name) AS names

引入了 GQL 兼容的独立 ORDER BYSKIP/OFFSETLIMIT 子句。

功能 新增

SET n:$(label)
REMOVE n:$(label)

添加了在 SETREMOVE 子句中动态引用标签的功能。

功能 新增

SET n[$prop] = "hello world"
REMOVE n[$prop]

添加了在 SETREMOVE 子句中动态引用属性的功能。

功能 新增

DROP [COMPOSITE] DATABASE ... [RESTRICT | CASCADE ALIAS[ES]]

添加了在删除数据库时删除数据库别名的功能。这将影响指向数据库的本地数据库别名以及属于复合数据库的组成数据库别名。有关更多信息,请参阅 删除具有指向它的本地数据库别名的数据库删除具有组成数据库别名的复合数据库

功能 新增

LOAD CSV FROM 'azb://azb-account/azb-container/artists.csv' AS row
MERGE (a:Artist {name: row[1], year: toInteger(row[2])})
RETURN a.name, a.year

扩展了 LOAD CSV 子句,以允许从 Azure 云存储 URI 加载 CSV 文件。

功能 新增

CREATE USER bob
SET AUTH 'externalProviderName' {
  SET ID 'userIdForExternalProvider'
}
SET AUTH 'native' {
  SET PASSWORD 'password'
  SET PASSWORD CHANGE REQUIRED
}

添加了设置哪些 身份验证提供程序 应用于用户的功能(企业版)。

现在也支持通过新语法管理本机(用户名/密码)身份验证(社区版)。

功能 新增

ALTER USER bob
REMOVE AUTH 'native'
SET AUTH 'externalProviderName' {
  SET ID 'userIdForExternalProvider'
}

添加了通过 ALTER USER 命令添加和删除用户 身份验证提供程序 的功能。

通过此新语法设置本机(用户名/密码)身份验证提供程序也受支持(社区版),但仅在企业版中支持删除任何身份验证提供程序或设置非本机身份验证提供程序。

功能 新增

SHOW USERS WITH AUTH

新增支持 WITH AUTH 以允许显示用户的身份验证提供程序,每个用户每个身份验证提供程序一行。

功能 新增

SET AUTH

允许用户修改用户 身份验证提供程序 的新权限。这是 ALTER USER 权限的子权限。与所有 GRANT/DENY 命令一样,此功能仅在企业版中可用。

Neo4j 5.23

已弃用功能

功能 详情

功能 已弃用

UNWIND [0, 1, 2] AS x
CALL {
  WITH x
  RETURN x * 10 AS y
}
RETURN x, y

使用 WITH 子句导入变量CALL 子查询已弃用,并替换为 变量作用域子句。同样,不使用变量作用域子句的裸子查询也已弃用。

更新的功能

功能 详情

功能 已更新

RETURN datetime.statement() IS :: TIMESTAMP WITH TIME ZONE

引入了新的符合 GQL 的持续时间类型别名:TIMESTAMP WITHOUT TIME ZONELOCAL DATETIME 的别名)、TIME WITHOUT TIME ZONELOCAL TIME 的别名)、TIMESTAMP WITH TIME ZONEZONED DATETIME 的别名)和 TIME WITH TIME ZONEZONED TIME 的别名)。

更多信息请参见 类型及其同义词

新功能

功能 详情

功能 新增

UNWIND [0, 1, 2] AS x
CALL (x) {
   RETURN x * 10 AS y
}
RETURN x, y

引入了一个新的 变量作用域子句,用于在 CALL 子查询中导入变量。

功能 新增

CREATE VECTOR INDEX moviePlots IF NOT EXISTS
FOR (m:Movie)
ON m.embedding
OPTIONS {indexConfig: {
`vector.quantization.enabled`: true
`vector.hnsw.m`: 16,
`vector.hnsw.ef_construction`: 100,
}}

为向量索引引入了以下 配置设置

  • vector.quantization.enabled:允许启用量化,这可以加快搜索性能,但也可能略微降低准确性。

  • vector.hnsw.m:控制索引内部图中每个节点的最大连接数。

  • vector.hnsw.ef_construction:设置将向量插入索引内部图时跟踪的最近邻的数量。

此外,从 Neo4j 5.23 开始,在创建向量索引时不再强制配置 vector.dimensionsvector.similarity_function 设置。

Neo4j 5.21

更新的功能

功能 详情

功能 已更新

SHOW FUNCTIONS YIELD *
SHOW PROCEDURES YIELD *

SHOW FUNCTIONSSHOW PROCEDURES 中引入了 deprecatedBy 列。默认情况下,这两个命令都不会返回此列。

该列是一个 STRING 值,如果使用的函数/过程已弃用,则指定替换函数/过程。否则,返回 null

新功能

功能 详情

功能 新增

GRANT READ {*} ON GRAPH * FOR (n) WHERE n.securityLevel > 3 TO regularUsers
GRANT TRAVERSE ON GRAPH * FOR (n:Email) WHERE n.classification IS NULL TO regularUsers
DENY MATCH {*} ON GRAPH * FOR (n) WHERE n.classification <> 'UNCLASSIFIED' TO regularUsers

引入了针对读取权限的 基于属性的访问控制。企业版现在支持基于节点属性值读取、遍历和匹配节点的功能。

功能 新增

LOAD CSV FROM 'gs://gs-bucket/artists.csv' AS row
MERGE (a:Artist {name: row[1], year: toInteger(row[2])})
RETURN a.name, a.year

扩展了 LOAD CSV 子句,以允许从 Google Cloud Storage URI 加载 CSV 文件。

功能 新增

CYPHER inferSchemaParts=most_selective_label

引入了 inferSchemaParts,这是一个新的 Cypher 查询选项,用于控制 Cypher 计划程序推断谓词的程度。

功能 新增

RETURN upper('abc'), lower('ABC')

引入了 lower()upper() 函数。这些是 toLower()toUpper() 函数的别名。

功能 新增

UNWIND range(1, 10) as i
  CALL {
    WITH i
    CREATE (n:N { i: i })
} IN 3 CONCURRENT TRANSACTIONS OF 2 ROWS

引入了 CALL { …​ } IN CONCURRENT TRANSACTIONS,它使用多个 CPU 处理器同时并发执行批处理内部事务。

功能 新增

MATCH SHORTEST 1 (:A)-[:R]->{0,10}(:B)
MATCH p = ANY 2 (:A)-[:R]->{0,10}(:B)
MATCH ALL SHORTEST (:A)-[:R]->{0,10}(:B)
MATCH SHORTEST 2 GROUPS (:A)-[:R]->{0,10}(:B)

引入了新的图模式匹配关键字,用于查找节点之间 最短路径 的各种变体。

引入了新的运算符来解决 SHORTEST 查询。

Neo4j 5.20

已弃用功能

功能 详情

功能 已弃用

MERGE (a {foo:1})-[:T]->(b {foo:a.foo})

合并节点或关系实体,然后在同一 MERGE 子句中的属性定义中引用该实体已弃用。改为将 MERGE 子句拆分为两个单独的子句。

新功能

功能 详情

语法 功能

RETURN trim(BOTH 'x' FROM 'xxhelloxx'),
       ltrim('xxhello', 'x'),
       rtrim('helloxx', 'x'),
       btrim('xxhelloxx', 'x')

引入了 btrim() 函数,该函数返回给定的 STRING,其中已删除前导和尾随的 trimCharacterString 字符。还扩展了 trim()ltrim()rtrim() 函数以接受替代的修剪字符字符串。

Neo4j 5.19

新功能

功能 详情

功能 新增

RETURN "Hello" || " " || "World";

RETURN [1, 2] || [3, 4, 5];

添加了新的 STRINGLIST 连接运算符

功能 新增

FINISH

新的 FINISH 子句,可选择用于定义不返回结果的查询。

功能 新增

RETURN 1 AS a
UNION DISTINCT
RETURN 1 AS a

现在可以在 UNION 之后添加关键字 DISTINCT 作为具有重复项删除的 UNION 的显式形式。

功能 新增

LOAD CSV FROM 's3://artists.csv' AS row
MERGE (a:Artist {name: row[1], year: toInteger(row[2])})
RETURN a.name, a.year

扩展了 LOAD CSV 子句,以允许从 AWS S3 URI 加载 CSV 文件。

功能 新增

  • "textembedding-gecko@002"

  • "textembedding-gecko@003"

  • "textembedding-gecko-multilingual@001"

添加了对其他 Vertex AI 向量编码模型的支持。还添加了对 Vertex AI taskTypetitle 嵌入参数的支持。

Neo4j 5.18

新功能

功能 详情

功能 新增

INSERT

添加了一个新的关键字 INSERT,它可以用作 CREATE 的同义词,用于创建节点和关系。

功能 新增

MATCH (n)
RETURN CASE n.prop
        WHEN IS NULL THEN "Null"
        WHEN < 0 THEN "Negative"
        WHEN 2, 4, 6, 8 THEN "Even"
        ELSE "Odd"
        END

扩展了 简单的 CASE 表达式,允许在同一个 WHEN 语句中用逗号分隔多个匹配值。简单的 CASE 使用隐式等于 (=) 比较器,此扩展还允许在 简单 CASE 的扩展版本 中显式指定匹配值之前的其他比较谓词。

功能 新增

CREATE VECTOR INDEX [index_name] [IF NOT EXISTS]
FOR ()-[r:REL_TYPE]-() ON (r.property)
OPTIONS {indexConfig: {
 `vector.dimensions`: $dimension,
 `vector.similarity_function`: $similarityFunction
}}

添加了创建关系向量索引的命令。使用此命令时,索引配置设置 vector.dimensionsvector.similarity_function 是必需的。该命令允许使用 IF NOT EXISTS 标志,如果索引已存在,则跳过索引创建。

功能 新增

RETURN vector.similarity.euclidean(a, b)
RETURN vector.similarity.cosine(a, b)

引入了 向量相似度函数。这些函数返回一个 FLOAT,表示向量 ab 的相似度。

Neo4j 5.17

更新的功能

功能 详情

功能 已更新

CREATE [index_type] INDEX [index_name] IF NOT EXISTS FOR ...

尝试使用 IF NOT EXISTS 创建索引时,如果索引名称或索引类型和模式(或两者)与现有索引相同,则该命令现在会返回一个通知,显示阻止创建的现有索引。

功能 已更新

CREATE CONSTRAINT [constraint_name] IF NOT EXISTS FOR ...

尝试使用 IF NOT EXISTS 创建约束时,如果约束名称或约束类型和模式(以及属性类型约束的属性类型)(或两者)与现有约束相同,则该命令现在会返回一个通知,显示阻止创建的现有约束。

功能 已更新

DROP CONSTRAINT constraint_name IF EXISTS

尝试使用 IF EXISTS 删除不存在的索引时,该命令现在将返回有关索引不存在的通知。

功能 已更新

DROP INDEX index_name IF EXISTS

尝试使用 IF EXISTS 删除不存在的约束时,该命令现在将返回有关约束不存在的通知。

新功能

功能 详情

功能 新增

RETURN normalize("string", NFC)

引入了 normalize() 函数。此函数根据指定的规范化形式规范化 STRING,该形式可以是 NFCNFDNFKCNFKD 类型。

功能 新增

IS [NOT] [NFC | NFD | NFKC | NFKD] NORMALIZED
RETURN "string" IS NORMALIZED

引入了 IS NORMALIZED 运算符。该运算符可用于检查 STRING 是否根据指定的规范化形式进行规范化,该形式可以是 NFCNFDNFKCNFKD 类型。

引入了 并行运行时 使用的分区运算符。这些运算符对数据进行分段,并并行地对每个分段进行操作。

Neo4j 5.16

更新的功能

功能 详情

功能 已更新

CREATE [index_type] INDEX $name [IF NOT EXISTS] FOR ...

DROP INDEX $name [IF EXISTS]

添加了在 CREATEDROP 命令中为索引名称使用参数的功能。

功能 已更新

CREATE CONSTRAINT $name [IF NOT EXISTS] FOR ...

DROP CONSTRAINT $name [IF EXISTS]

添加了在 CREATEDROP 命令中为约束名称使用参数的功能。

新功能

功能 详情

功能 新增

GRANT LOAD ON CIDR "127.0.0.1/32" TO role
DENY LOAD ON CIDR "::1/128" TO role

添加了在 CIDR 范围内授予或拒绝 LOAD 权限的功能。有关更多信息,请参见 操作手册→CIDR 权限

Neo4j 5.15

已弃用功能

功能 详情

功能 已弃用

RETURN 1 as my\u0085identifier

Unicode 字符 `\u0085` 已弃用,用于未转义的标识符,将来会被视为空格字符。要继续使用它,请通过在标识符周围添加反引号来转义标识符。这适用于 Cypher 中所有未转义的标识符,例如标签表达式、属性、变量名或参数。在给定的示例中,带引号的标识符将为 `my�identifier`。

功能 已弃用

RETURN 1 as my$Identifier

具有 Unicode 表示形式 `\u0024` 的字符已弃用,用于未转义的标识符,将来将不支持。要继续使用它,请通过在标识符周围添加反引号来转义标识符。这适用于 Cypher 中所有未转义的标识符,例如标签表达式、属性、变量名或参数。在给定的示例中,带引号的标识符将为 `my$identifier`。

标识符中已弃用以下 Unicode 字符:'\u0000'、'\u0001'、'\u0002'、'\u0003'、'\u0004'、'\u0005'、'\u0006'、'\u0007'、'\u0008'、'\u000E'、'\u000F'、'\u0010'、'\u0011'、'\u0012'、'\u0013'、'\u0014'、'\u0015'、'\u0016'、'\u0017'、'\u0018'、'\u0019'、'\u001A'、'\u001B'、'\u007F'、'\u0080'、'\u0081'、'\u0082'、'\u0083'、'\u0084'、'\u0086'、'\u0087'、'\u0088'、'\u0089'、'\u008A'、'\u008B'、'\u008C'、'\u008D'、'\u008E'、'\u008F'、'\u0090'、'\u0091'、'\u0092'、'\u0093'、'\u0094'、'\u0095'、'\u0096'、'\u0097'、'\u0098'、'\u0099'、'\u009A'、'\u009B'、'\u009C'、'\u009D'、'\u009E'、'\u009F'、'\u0024'、'\u00A2'、'\u00A3'、'\u00A4'、'\u00A5'、'\u00AD'、'\u0600'、'\u0601'、'\u0602'、'\u0603'、'\u0604'、'\u0605'、'\u061C'、'\u06DD'、'\u070F'、'\u08E2'、'\u180E'、'\u200B'、'\u200C'、'\u200D'、'\u200E'、'\u200F'、'\u202A'、'\u202B'、'\u202C'、'\u202D'、'\u202E'、'\u2060'、'\u2061'、'\u2062'、'\u2063'、'\u2064'、'\u2066'、'\u2067'、'\u2068'、'\u2069'、'\u206A'、'\u206B'、'\u206C'、'\u206D'、'\u206E'、'\u206F'、'\u2E2F'、'\uFEFF'、'\uFFF9'、'\uFFFA'、'\uFFFB'

更新的功能

功能 详情

功能 已更新

SHOW VECTOR INDEXES

扩展了 SHOW INDEXES,方便过滤向量索引。这等同于 SHOW INDEXES WHERE type = 'VECTOR'

功能 已更新

MATCH (n:Label) WHERE $param IS :: STRING NOT NULL AND n.prop = $param

IS :: STRING NOT NULL 现在是 索引兼容谓词

新特性

功能 详情

功能 新增

MATCH (n)
RETURN count(ALL n.prop)

添加了一个新的关键字 ALL,明确定义聚合函数不是 DISTINCT。这是对函数中已存在的关键字 DISTINCT 的镜像。

功能 新增

CREATE VECTOR INDEX [index_name] [IF NOT EXISTS]
FOR (n: Label) ON (n.property)
OPTIONS {indexConfig: {
 `vector.dimensions`: $dimension,
 `vector.similarity_function`: $similarityFunction
}}

添加了创建节点向量索引的命令,替换了 db.index.vector.createNodeIndex 过程。使用此命令时,索引配置设置 vector.dimensionsvector.similarity_function 是必需的。该命令允许使用 IF NOT EXISTS 标志,如果索引已存在则跳过索引创建。

Neo4j 5.14

更新的特性

功能 详情

功能 已更新

IS :: INTEGER!

扩展了 类型 语法,允许使用感叹号 ! 作为 NOT NULL 的同义词。

新特性

功能 详情

功能 新增

RETURN nullIf(v1, v2)

引入了 nullIf() 函数。如果给定的两个参数相等,此函数返回 null,否则返回第一个参数的值。

功能 新增

MATCH (n) NODETACH DELETE n

添加了一个新的关键字 NODETACH,明确定义关系不会被分离和删除。这是对已存在的关键字 DETACH 的镜像。

Neo4j 5.13

更新的特性

功能 详情

功能 已更新

SHOW FUNCTIONS YIELD *
SHOW PROCEDURES YIELD *

更新了 SHOW FUNCTIONSSHOW PROCEDURES 中的 signatures 列。

过程签名现在遵循以下模式:"procedureName(param1 :: TYPE, param2 :: TYPE, .., paramN :: TYPE) :: (returnParam1 :: TYPE, returnParam2, .., returnParamN :: TYPE)"

没有返回列的过程的签名现在遵循以下模式:"procedureName(param1 :: TYPE, param2 :: TYPE, .., paramN :: TYPE)"

函数签名现在遵循以下模式:"functionName(param1 :: TYPE, param2 :: TYPE, .., paramN :: TYPE) :: TYPE"

有关所有可用的 Cypher 类型,请参阅有关 类型及其同义词 的部分。

新特性

功能 详情

功能 测试版

CALL cdc.current()
CALL cdc.earliest()
CALL cdc.query(from, selectors)

引入了更改数据捕获 (CDC) 功能。有关详细信息,请参阅 更改数据捕获

功能 新增

RETURN valueType(expr)

引入了 valueType() 函数。此函数返回给定表达式计算结果的最精确值 类型STRING 表示形式。

功能 新增

RETURN char_length(expr)

引入了 char_length() 函数。此函数返回 STRING 中 Unicode 字符的数量。它是 size() 函数的别名。

功能 新增

RETURN character_length(expr)

引入了 character_length() 函数。此函数返回 STRING 中 Unicode 字符的数量。它是 size() 函数的别名。

功能 新增

新权限

GRANT LOAD ON ALL DATA TO `role`

控制用户加载数据能力的新权限。与其他权限不同,这些权限不是在图、数据库或 DBMS 上授予、拒绝或撤销,而是在 ALL DATA 上授予、拒绝或撤销。

功能 新增

USE graph.byElementId(elementId :: STRING)

新的图函数 graph.byElementId(),它解析给定元素 ID 所属的组成图。

功能 新增

CYPHER runtime = parallel

引入了 并行运行时。此运行时专为在具有多个可用 CPU 的机器上运行的分析型、图全局读取查询而设计。

Neo4j 5.12

新特性

功能 详情

功能 新增

db.nameFromElementId(elementId :: STRING) :: STRING

新的 数据库函数,用于从元素 ID 返回数据库名称。

Neo4j 5.11

更新的特性

功能 详情

功能 已更新

SHOW ALIASES

SHOW ALIASES 中引入了新的列 composite。默认情况下返回此列。

该列返回别名所属的复合数据库的名称,如果别名不属于复合数据库,则返回 null

功能 已更新

IS [NOT] :: <TYPE>

扩展了 类型谓词表达式。现在支持封闭动态联合类型 (type1 | type2 | …​)。例如,以下查询如果值为 INTEGERFLOAT 类型,则计算结果为 true

IS :: INTEGER | FLOAT

功能 已更新

CREATE CONSTRAINT name FOR (n:Label) REQUIRE n.prop IS :: <PROPERTY TYPE>

CREATE CONSTRAINT name FOR ()-[r:TYPE]-() REQUIRE r.prop IS :: <PROPERTY TYPE>

扩展了 节点和关系属性类型约束。现在支持封闭动态联合类型 (type1 | type2 | …​),允许以下类型

  • INTEGER | FLOAT

  • LIST<STRING NOT NULL> | STRING

  • ZONED DATETIME | LOCAL DATETIME

功能 已更新

ALTER CURRENT USER
SET PASSWORD FROM 'password1' TO 'password2'

此命令现在即使在显式事务内执行也会自动提交。

Neo4j 5.10

更新的特性

功能 详情

功能 已更新

IS [NOT] :: <TYPE>

扩展了 类型谓词表达式。新支持的类型为

  • NOTHING

  • NULL

  • BOOLEAN NOT NULL

  • STRING NOT NULL

  • INTEGER NOT NULL

  • FLOAT NOT NULL

  • DATE NOT NULL

  • LOCAL TIME NOT NULL

  • ZONED TIME NOT NULL

  • LOCAL DATETIME NOT NULL

  • ZONED DATETIME NOT NULL

  • DURATION NOT NULL

  • POINT NOT NULL

  • NODE

  • NODE NOT NULL

  • RELATIONSHIP

  • RELATIONSHIP NOT NULL

  • MAP

  • MAP NOT NULL

  • LIST<TYPE>

  • LIST<TYPE> NOT NULL

  • PATH

  • PATH NOT NULL

  • PROPERTY VALUE

  • PROPERTY VALUE NOT NULL

  • ANY

  • ANY NOT NULL

功能 已更新

CREATE CONSTRAINT name FOR (n:Label) REQUIRE n.prop IS :: <PROPERTY TYPE>

CREATE CONSTRAINT name FOR ()-[r:TYPE]-() REQUIRE r.prop IS :: <PROPERTY TYPE>

扩展了 节点和关系属性类型约束。新支持的类型为

  • LIST<BOOLEAN NOT NULL>

  • LIST<STRING NOT NULL>

  • LIST<INTEGER NOT NULL>

  • LIST<FLOAT NOT NULL>

  • LIST<DATE NOT NULL>

  • LIST<LOCAL TIME NOT NULL>

  • LIST<ZONED TIME NOT NULL>

  • LIST<LOCAL DATETIME NOT NULL>

  • LIST<ZONED DATETIME NOT NULL>

  • LIST<DURATION NOT NULL>

  • LIST<POINT NOT NULL>

Neo4j 5.9

已弃用的特性

功能 详情

功能 已弃用

CREATE (a {foo:1}), (b {foo:a.foo})

创建节点或关系实体,然后在同一 CREATE 子句中的属性定义中引用该实体已弃用。将 CREATE 子句拆分为两个单独的子句。

更新的特性

功能 详情

功能 已更新

SHOW SETTINGS YIELD *
SHOW FUNCTIONS YIELD *
SHOW PROCEDURES YIELD *

SHOW SETTINGSSHOW FUNCTIONSSHOW PROCEDURES 中引入了 isDeprecated 列。在任一命令中都不会默认返回它。

如果设置/函数/过程已弃用,则该列为 true,否则为 false。

功能 已更新

SHOW FUNCTIONS YIELD argumentDescription
SHOW PROCEDURES YIELD argumentDescription, returnDescription

SHOW FUNCTIONSSHOW PROCEDURES 的参数和返回描述映射中引入了 isDeprecated 字段。

如果参数/返回值已弃用,则该字段为 true,否则为 false。

功能 已更新

SHOW CONSTRAINTS

引入了 propertyType 列,默认情况下返回它。它返回属性类型约束的属性类型的 STRING 表示形式,对于其他约束则返回 null

新特性

功能 详情

功能 新增

MATCH ((x:A)-[:R]->(z:B WHERE z.h > x.h)){1,5}

引入了量化路径模式 - 图模式匹配中一种新的方法,用于匹配可变长度的路径。更多信息请参见 此处

功能 新增

新运算符:Repeat(Trail)

Repeat(Trail) 运算符用于解决 量化路径模式。更多信息请参见 此处

功能 新增

IS [NOT] :: <TYPE>

添加了 类型谓词表达式。可用的类型为

  • BOOLEAN

  • STRING

  • INTEGER

  • FLOAT

  • DATE

  • LOCAL TIME

  • ZONED TIME

  • LOCAL DATETIME

  • ZONED DATETIME

  • DURATION

  • POINT

功能 新增

CREATE CONSTRAINT name FOR (n:Label) REQUIRE n.prop IS :: <PROPERTY TYPE>

CREATE CONSTRAINT name FOR ()-[r:TYPE]-() REQUIRE r.prop IS :: <PROPERTY TYPE>

添加了 节点和关系属性类型约束。可用的属性类型为

  • BOOLEAN

  • STRING

  • INTEGER

  • FLOAT

  • DATE

  • LOCAL TIME

  • ZONED TIME

  • LOCAL DATETIME

  • ZONED DATETIME

  • DURATION

  • POINT

功能 新增

SHOW NODE PROPERTY TYPE CONSTRAINTS

SHOW REL[ATIONSHIP] PROPERTY TYPE CONSTRAINTS

SHOW PROPERTY TYPE CONSTRAINTS

SHOW CONSTRAINTS 添加了对新属性约束的过滤。包括对节点部分、关系部分或两个部分的过滤。

功能 新增

SHOW SUPPORTED PRIVILEGE[S]

列出当前服务器上支持的权限。

Neo4j 5.8

更新的特性

功能 详情

功能 已更新

SHOW INDEXES

引入了 lastReadreadCounttrackedSince 列。lastReadreadCount 都默认返回。

lastRead 列返回上次使用索引进行读取的时间。readCount 列返回已向此索引发出的读取查询的数量。trackedSince 列返回开始跟踪此索引的使用统计信息的时间。

新特性

功能 详情

功能 新增

新运算符:AssertSameRelationship

AssertSameRelationship 运算符用于确保在槽化和解释运行时不会违反任何关系属性唯一性约束。更多信息请参见 此处

Neo4j 5.7

已弃用的特性

功能 详情

功能 已弃用

CYPHER connectComponentsPlanner=greedy MATCH (a), (b) RETURN *
CYPHER connectComponentsPlanner=idp MATCH (a), (b) RETURN *

Cypher 查询选项 connectComponentsPlanner 已弃用,并将删除,不会提供替代方案。产品在组合子计划时使用基于成本的 IDP 搜索算法的默认行为将保留。

更新的特性

功能 详情

功能 已更新

ALTER DATABASE ... [WAIT [n [SEC[OND[S]]]]|NOWAIT]

ALTER DATABASE 添加了新的子句 WAIT。这使得可以添加等待子句以指定命令必须完成并返回的时间限制。

功能 新增

CREATE CONSTRAINT name FOR ()-[r:TYPE]-() REQUIRE r.prop IS UNIQUE

CREATE CONSTRAINT name FOR ()-[r:TYPE]-() REQUIRE r.prop IS RELATIONSHIP KEY

添加了关系 属性唯一性 约束。

功能 新增

SHOW NODE UNIQUE[NESS] CONSTRAINTS

SHOW REL[ATIONSHIP] UNIQUE[NESS] CONSTRAINTS

SHOW UNIQUE[NESS] CONSTRAINTS

SHOW REL[ATIONSHIP] KEY CONSTRAINTS

SHOW KEY CONSTRAINTS

SHOW CONSTRAINTS 添加了对新约束类型的过滤。包括对每种类型的节点部分、关系部分或两个部分的过滤(NODE KEY 过滤之前已存在)。

现有的UNIQUENESS过滤器现在将返回节点和关系属性唯一性约束。

新增功能

功能 详情

功能 新增

CALL {
  <inner>
} IN TRANSACTIONS [ OF <num> ROWS ]
  [ ON ERROR CONTINUE / BREAK / FAIL ]
  [ REPORT STATUS AS <v> ]

新增细粒度控制机制,用于控制内部事务如何影响后续的内部和/或外部事务。

  • ON ERROR CONTINUE - 当其中一个内部事务失败时,将忽略错误并继续执行后续的内部事务。

  • ON ERROR BREAK - 将忽略错误并停止执行后续的内部事务。

  • ON ERROR FAIL - 发生错误时将失败。

  • REPORT STATUS AS <v> - 报告内部事务的执行状态(一个包含字段startedcommittedtransactionIderrorMessage的映射值)。此标志不允许用于ON ERROR FAIL

Neo4j 5.6

新增功能

功能 详情

功能 新增

server.tag

新增功能,可通过ALTER SERVER在运行时更改标签。更多信息可以在操作手册 → ALTER SERVER选项中找到。

功能 新增

COLLECT {
    ...
}

新增表达式,返回以列表形式收集的子查询的结果。

功能 新增

SHOW SETTING[S] [setting-name[,...]]
[YIELD { * | field[, ...] } [ORDER BY field[, ...]] [SKIP n] [LIMIT n]]
[WHERE expression]
[RETURN field[, ...] [ORDER BY field[, ...]] [SKIP n] [LIMIT n]]

列出当前服务器上的配置设置。

setting-name可以是一个或多个用引号括起来的STRING值的逗号分隔列表,也可以是一个解析为STRINGLIST<STRING>的单个表达式。

功能 新增
新权限

SHOW SETTING[S] name-globbing[,...]

新增权限,用于控制用户对所需配置设置的访问。

Neo4j 5.5

已弃用功能

功能 详情

功能 已弃用

RETURN 'val' as one, 'val' as two
UNION
RETURN 'val' as two, 'val' as one
RETURN 'val' as one, 'val' as two
UNION ALL
RETURN 'val' as two, 'val' as one

UNION [ALL]子句中使用不同顺序的返回项已弃用。替换为

RETURN 'val' as one, 'val' as two
UNION
RETURN 'val' as one, 'val' as two
RETURN 'val' as one, 'val' as two
UNION ALL
RETURN 'val' as one, 'val' as two

新增功能

功能 详情

功能 新增

新增运算符:IntersectionNodeByLabelsScan

IntersectionNodeByLabelsScan运算符从节点标签索引中获取具有所有提供的标签的所有节点。更多信息可以在此处找到。

Neo4j 5.3

更新的功能

功能 详情

功能 已更新

SHOW DATABASES

托管在脱机服务器上的数据库的可见性更改。

对于此类数据库

  • address列将返回NULL

  • currentStatus列将返回unknown

  • statusMessage将返回Server is unavailable

功能 已更新

EXISTS {
    ...
}

EXISTS子查询现在支持任何非写入查询。例如,它现在支持UNIONCALL子句。

功能 已更新

COUNT {
    ...
}

COUNT子查询现在支持任何非写入查询。例如,它现在支持UNIONCALL子句。

功能 已更新

SHOW UNIQUE[NESS] CONSTRAINTS

属性唯一性约束类型过滤器现在允许UNIQUEUNIQUENESS关键字。

新增功能

功能 详情

功能 新增

新增运算符:NodeByElementIdSeek

NodeByElementIdSeek运算符通过函数elementId()指定的节点存储读取一个或多个节点。更多信息可以在此处找到。

Neo4j 5.2

更新的功能

功能 详情

功能 已更新

CREATE COMPOSITE DATABASE name OPTIONS {}

创建复合数据库现在允许使用空选项子句。复合数据库没有适用的选项值。

功能 新增

DRYRUN REALLOCATE|DEALLOCATE DATABASES FROM <serverId>

要预览REALLOCATEDEALLOCATE的结果而不执行,请在命令前加上DRYRUN

Neo4j 5.1

已弃用功能

功能 详情

功能 已弃用

CREATE TEXT INDEX ... OPTIONS {indexProvider: `text-1.0`}

文本索引提供程序text-1.0已弃用,并替换为text-2.0

更新的功能

功能 详情

功能 已更新

CREATE TEXT INDEX ... OPTIONS {indexProvider: `text-2.0`}

提供了一种新的文本索引提供程序text-2.0。如果未给出任何提供程序,这也是默认提供程序。

Neo4j 5.0

已移除的功能

功能 详情

功能 已移除

SHOW EXISTS CONSTRAINTS
SHOW NODE EXISTS CONSTRAINTS
SHOW RELATIONSHIP EXISTS CONSTRAINTS

替换为

SHOW [PROPERTY] EXIST[ENCE] CONSTRAINTS
SHOW NODE [PROPERTY] EXIST[ENCE] CONSTRAINTS
SHOW REL[ATIONSHIP] [PROPERTY] EXIST[ENCE] CONSTRAINTS

功能 已移除

SHOW INDEXES BRIEF
SHOW CONSTRAINTS BRIEF

替换为

SHOW INDEXES
SHOW CONSTRAINTS

功能 已移除

SHOW INDEXES VERBOSE
SHOW CONSTRAINTS VERBOSE

替换为

SHOW INDEXES YIELD *
SHOW CONSTRAINTS YIELD *

功能 已移除

DROP INDEX ON :Label(prop)

替换为

DROP INDEX name

功能 已移除

DROP CONSTRAINT ON (n:Label) ASSERT (n.prop) IS NODE KEY
DROP CONSTRAINT ON (n:Label) ASSERT (n.prop) IS UNIQUE
DROP CONSTRAINT ON (n:Label) ASSERT exists(n.prop)
DROP CONSTRAINT ON ()-[r:Type]-() ASSERT exists(r.prop)

替换为

DROP CONSTRAINT name

功能 已移除

CREATE INDEX ON :Label(prop)

替换为

CREATE INDEX FOR (n:Label) ON (n.prop)

功能 已移除

CREATE CONSTRAINT ON ... ASSERT ...

替换为

CREATE CONSTRAINT FOR ... REQUIRE ...

功能 已移除

CREATE BTREE INDEX ...

功能 已移除

CREATE INDEX
...
OPTIONS "{" btree-option: btree-value[, ...] "}"

B树索引已移除。

用于STRING谓词的B树索引替换为

CREATE TEXT INDEX ...

用于空间查询的B树索引替换为

CREATE POINT INDEX ...

用于一般查询或属性值类型的B树索引替换为

CREATE [RANGE] INDEX ...

这些新索引可以组合用于多种用例。

功能 已移除

SHOW BTREE INDEXES

B树索引已移除。

替换为

SHOW {POINT | RANGE | TEXT} INDEXES

功能 已移除

USING BTREE INDEXES

B树索引已移除。

替换为

USING {POINT | RANGE | TEXT} INDEX

功能 已移除

CREATE CONSTRAINT
...
OPTIONS "{" btree-option: btree-value[, ...] "}"

由B树索引支持的节点键和属性唯一性约束已移除。

替换为

CREATE CONSTRAINT ...

用于STRING属性的约束需要额外的文本索引才能正确覆盖STRING谓词。用于点属性的约束需要额外的点索引才能正确覆盖空间查询。

功能 已移除

SHOW INDEXES YIELD uniqueness

uniqueness输出已与索引唯一性的概念一起移除,因为它实际上属于约束而不是索引。

引入了新的列owningConstraint以指示索引是否属于约束。

功能 已移除

SHOW CONSTRAINTS YIELD ownedIndexId

ownedIndexId输出已移除,并替换为新的ownedIndex列。

功能 已移除
对于权限命令

ON DEFAULT DATABASE

替换为

ON HOME DATABASE

功能 已移除
对于权限命令

ON DEFAULT GRAPH

替换为

ON HOME GRAPH

功能 已移除

SHOW TRANSACTIONS YIELD allocatedBytes

allocatedBytes输出已移除,因为它从未被跟踪,因此始终为0。

功能 已移除

exists(prop)

替换为

prop IS NOT NULL

功能 已移除

NOT exists(prop)

替换为

prop IS NULL

功能 已移除

0...

替换为0o...

功能 已移除

0X...

仅支持0x...(小写x)。

功能 已移除

MATCH ()-[r]-()
RETURN [ ()-[r]-()-[r]-() | r ] AS rs

删除了对重复关系变量的剩余支持。

功能 已移除

WHERE [1,2,3]

删除了将列表自动强制转换为布尔值的功能。

替换为

WHERE NOT isEmpty([1, 2, 3])

功能 已移除

distance(n.prop, point({x:0, y:0})

替换为

point.distance(n.prop, point({x:0, y:0})

功能 已移除

point({x:0, y:0}) <= point({x:1, y:1}) <= point({x:2, y:2})

删除了对空间点使用运算符<<=>>=的功能。改为使用

point.withinBBox(point({x:1, y:1}), point({x:0, y:0}), point({x:2, y:2}))

功能 已移除

USING PERIODIC COMMIT ...

替换为

CALL {
  ...
} IN TRANSACTIONS

功能 已移除

CREATE (a {prop:7})-[r:R]->(b {prop: a.prop})

不再允许在CREATE子句中,模式中引入的变量也从同一模式中引用。

功能 已移除

CALL { RETURN 1 }

子查询RETURN子句中不再支持未别名化的表达式。替换为

CALL { RETURN 1 AS one }

功能 已移除

MATCH (a) RETURN (a)--()

生成路径列表的模式表达式不再受支持,但它们仍可作为存在谓词使用,例如在WHERE子句中。改为使用模式推导

MATCH (a) RETURN [p=(a)--() | p]

功能 已移除

MATCH (n) RETURN n.propertyName_1, n.propertyName_2 + count(*)

不再支持隐式分组键。仅包含聚合的表达式仍被视为分组键。在包含聚合的表达式中,叶子必须是:

  • 聚合

  • 字面量

  • 参数

  • 变量,**仅当**它满足以下条件之一:1)它本身是投影表达式(例如,RETURN n AS myNode, n.value + count(*)中的n
    2)表达式中的局部变量(例如,RETURN n, n.prop + size([ x IN range(1, 10) | x ]中的x

  • 属性访问,**仅当**它本身也是投影表达式(例如,RETURN n.prop, n.prop + count(*)中的n.prop

  • 映射访问,**仅当**它本身也是投影表达式(例如,WITH {prop: 2} AS map RETURN map.prop, map.prop + count(*)中的map.prop

已弃用功能

功能 详情

功能 已弃用

MATCH (n)-[r:REL]->(m) SET n=r

改为使用properties()函数获取节点/关系的属性映射,然后可以在SET子句中使用

MATCH (n)-[r:REL]->(m) SET n=properties(r)

功能 已弃用

MATCH (a), (b), allShortestPaths((a)-[r]->(b)) RETURN b

MATCH (a), (b), shortestPath((a)-[r]->(b)) RETURN b

不带可变长度关系shortestPathallShortestPaths已弃用。改为使用带有LIMIT 1的MATCH

MATCH (a), (b), shortestPath((a)-[r*1..1]->(b)) RETURN b

功能 已弃用

CREATE DATABASE databaseName.withDot ...

创建名称中带有未转义点的数据库已弃用,改为转义数据库名称

CREATE DATABASE `databaseName.withDot` ...

功能 已弃用

()-[:A|:B]->()

替换为

()-[:A|B]->()

更新的功能

功能 详情

功能 已更新

CREATE INDEX ...

默认索引类型已从B树更改为范围索引。

功能 已更新

SHOW INDEXES

添加了新列owningConstraint,并将从现在开始默认返回。它将列出索引关联的约束的名称,或者在未关联任何约束的情况下列出null

功能 已更新

SHOW CONSTRAINTS

添加了新列ownedIndex,并将从现在开始默认返回。它将列出与约束关联的索引的名称,或者在没有索引与之关联的情况下列出null

功能 已更新

SHOW TRANSACTIONS YIELD *

为当前查询添加了新列

  • currentQueryStartTime

  • currentQueryStatus

  • currentQueryActiveLockCount

  • currentQueryElapsedTime

  • currentQueryCpuTime

  • currentQueryWaitTime

  • currentQueryIdleTime

  • currentQueryAllocatedBytes

  • currentQueryPageHits

  • currentQueryPageFaults

这些列仅在完整集合(使用YIELD)中返回,而不是默认返回。

功能 已更新

TERMINATE TRANSACTIONS transaction-id[,...]
YIELD { * | field[, ...] }
[ORDER BY field[, ...]]
[SKIP n]
[LIMIT n]
[WHERE expression]
[RETURN field[, ...] [ORDER BY field[, ...]] [SKIP n] [LIMIT n]]

终止事务现在允许使用YIELDWHERE子句本身不允许,就像SHOW一样,但需要YIELD子句。

功能 已更新

SHOW TRANSACTIONS [transaction-id[,...]]
TERMINATE TRANSACTIONS transaction-id[,...]

transaction-id现在允许解析为STRINGLIST<STRING>的一般表达式,而不仅仅是参数。

功能 已更新

SHOW TRANSACTIONS [transaction-id[,...]]
YIELD field[, ...]
  [ORDER BY field[, ...]]
  [SKIP n]
  [LIMIT n]
  [WHERE expression]
TERMINATE TRANSACTIONS transaction-id[,...]
YIELD field[, ...]
  [ORDER BY field[, ...]]
  [SKIP n]
  [LIMIT n]
  [WHERE expression]
RETURN field[, ...]
  [ORDER BY field[, ...]]
  [SKIP n]
  [LIMIT n]

SHOWTERMINATE TRANSACTIONS命令可以在同一个查询中组合使用。查询不需要特定的顺序,并且每种命令类型可以有零个或多个,但是至少需要一个命令。

当命令不在独立模式下时,YIELDRETURN子句是强制性的。YIELD *不允许。

transaction-id是一个或多个用引号括起来的STRING值的逗号分隔列表。它也可以是一个解析为STRINGLIST<STRING>的表达式(例如,来自SHOW的输出列)。

功能 已更新

GRANT EXECUTE BOOSTED PROCEDURE ...
GRANT EXECUTE BOOSTED FUNCTION ...

不是语法更改,而是语义更改。授予EXECUTE BOOSTED权限时,将不再包含隐式的EXECUTE权限。这意味着要以提升的权限执行过程或函数,需要EXECUTEEXECUTE BOOSTED权限。

功能 已更新

[GRANT|DENY] [IMMUTABLE] ...

权限可以指定为IMMUTABLE,这意味着具有权限管理的用户无法更改它们。它们只能在禁用身份验证的情况下进行管理。

功能 已更新

REVOKE [IMMUTABLE] ...

现在可以在REVOKE命令中指定IMMUTABLE,以指定仅撤销不可变权限。

功能 已更新

SHOW DATABASES

结果中默认列的更改

  • 已添加writertypeconstituents列。

  • role列中返回的值已更改为仅primarysecondaryunknown

  • error列已重命名为statusMessage

以下列已添加到完整结果集中(使用YIELD),而不是默认返回

  • creationTime

  • lastStartTime

  • lastStopTime

  • store

  • currentPrimariesCount

  • currentSecondariesCount

  • requestedPrimariesCount

  • requestedSecondariesCount

功能 已更新

MATCH (n)
RETURN
CASE n.prop
    WHEN null THEN 'one'
    ELSE 'two'
END

以前,如果n.propnull,则将返回'one'。现在,返回'two'

这仅是语义更改。由于null = null在Cypher中返回false,因此WHEN表达式不再匹配null

如果需要匹配null,请改为使用IS NULL

MATCH (n)
RETURN
CASE
    WHEN n.prop IS NULL THEN 'one'
    ELSE 'two'
END

功能 已更新

RETURN round(val, precision)

舍入无穷大和NaN值现在将返回原始值,而不是对于精度0返回整数近似值,并且对于精度>0抛出异常

旧值 新值

round(Inf)

9223372036854776000.0

Inf

round(Inf, 1)

异常

Inf

round(NaN)

0

NaN

round(Inf, 1)

异常

NaN

要获取整数值,请使用toInteger函数。

功能 已更新

CREATE [OR REPLACE] ALIAS compositeDatabase.aliasName ...
ALTER ALIAS compositeDatabase.aliasName
DROP ALIAS compositeDatabase.aliasName

别名命令现在可以处理复合数据库中的别名。

功能 已更新

SHOW ALIAS[ES] aliasName FOR DATABASE[S]
SHOW ALIAS[ES] compositeDatabase.aliasName FOR DATABASE[S]

SHOW ALIAS现在允许轻松过滤别名名称。

功能 已更新

CREATE [OR REPLACE] ALIAS compositeDatabase.aliasName ...
ALTER ALIAS compositeDatabase.aliasName
DROP ALIAS compositeDatabase.aliasName

别名命令现在可以处理复合数据库中的别名。

功能 已更新

SHOW ALIAS[ES] aliasName FOR DATABASE[S]
SHOW ALIAS[ES] compositeDatabase.aliasName FOR DATABASE[S]

SHOW ALIAS现在允许轻松过滤别名名称。

新增功能

功能 详情

功能 新增

CREATE [OR REPLACE] COMPOSITE DATABASE databaseName [IF NOT EXISTS] [WAIT [n [SEC[OND[S]]]]|NOWAIT]
DROP COMPOSITE DATABASE databaseName [IF EXISTS] [DUMP DATA | DESTROY DATA] [WAIT [n [SEC[OND[S]]]]|NOWAIT]

用于创建和删除复合数据库的新Cypher命令。

功能 新增
新权限

CREATE COMPOSITE DATABASE
DROP COMPOSITE DATABASE
COMPOSITE DATABASE MANAGEMENT

允许用户CREATE和/或DROP复合数据库的新权限。

功能 新增

1_000_000, 0x_FF_FF, 0o_88_88

Cypher现在支持数字文字,数字之间可以使用下划线。

功能 新增

isNaN(n.prop)

新增函数,返回给定数字是否为NaNNaN是浮点标准IEEE 754中定义的特殊浮点数。引入此函数是因为包括NaN = NaN在内的比较返回false。

功能 新增

NaN, Inf, Infinity

Cypher 现在支持浮点数字面量表示 InfinityNaNNaN 定义了一个静默的非数字值,在算术运算中不会抛出任何异常。这两个值都根据浮点标准 IEEE 754 实现。

功能 新增

COUNT { (n) WHERE n.foo = "bar" }

新的表达式,用于返回子查询的结果数量。

功能 新增

CREATE DATABASE ... TOPOLOGY n PRIMAR{Y|IES} [m SECONDAR{Y|IES}]

用于 CREATE DATABASE 的新子句,用于在集群环境中创建数据库时指定托管数据库的服务器数量。

功能 新增

ALTER DATABASE ... SET TOPOLOGY n PRIMAR{Y|IES} [m SECONDAR{Y|IES}]

用于 ALTER DATABASE 的新子句,允许在集群环境中修改托管数据库的服务器数量。

功能 新增

ENABLE SERVER ...

用于启用服务器的新 Cypher 命令。

功能 新增

ALTER SERVER ... SET OPTIONS ...

用于设置服务器选项的新 Cypher 命令。

功能 新增

RENAME SERVER ... TO ...

用于更改服务器名称的新 Cypher 命令。

功能 新增

REALLOCATE DATABASES

用于重新平衡哪些服务器托管哪些数据库的新 Cypher 命令。

功能 新增

DEALLOCATE DATABASE[S] FROM SERVER[S] ...

用于将所有数据库从服务器移动到其他服务器的新 Cypher 命令。

功能 新增

DROP SERVER ...

用于删除服务器的新 Cypher 命令。

功能 新增

SHOW SERVERS

用于列出服务器的新 Cypher 命令。

功能 新增
新的权限

SERVER MANAGEMENT
SHOW SERVERS

允许用户创建、修改、重新分配、释放、删除和列出服务器的新权限。

功能 新增

MATCH (n: A&(B|C)&!D)

用于表达节点可能具有的标签的谓词的新简洁语法,称为标签表达式。

功能 新增

MATCH ()-[r:(!A&!B)]->()

用于表达关系可能具有的关系类型谓词的新简洁语法,称为关系类型表达式。

功能 新增

MATCH ()-[r:R {prop1: 42} WHERE r.prop2 > 42]->()

启用在关系模式内内联 WHERE 子句的新语法。

Neo4j 4.4

已弃用的功能

功能 详情

功能 已弃用

MATCH (n) RETURN n.propertyName_1, n.propertyName_2 + count(*)

隐式分组键已弃用。只有包含聚合的表达式才仍被视为分组键。在包含聚合的表达式中,叶子必须是

  • 聚合

  • 字面量

  • 参数

  • 一个变量,**仅当**它是
    1) 一个独立的投影表达式(例如,RETURN n AS myNode, n.value + count(*) 中的 n
    2)表达式中的局部变量(例如,RETURN n, n.prop + size([ x IN range(1, 10) | x ]中的x

  • 属性访问,**仅当**它本身也是投影表达式(例如,RETURN n.prop, n.prop + count(*)中的n.prop

  • 映射访问,**仅当**它本身也是投影表达式(例如,WITH {prop: 2} AS map RETURN map.prop, map.prop + count(*)中的map.prop

语法 已弃用

USING PERIODIC COMMIT ...

替换为

CALL {
  ...
} IN TRANSACTIONS

语法 已弃用

CREATE (a {prop:7})-[r:R]->(b {prop: a.prop})

在模式中引入的变量也从同一模式中引用的 CREATE 子句已弃用。

语法 已弃用

CREATE CONSTRAINT ON ... ASSERT ...

替换为

CREATE CONSTRAINT FOR ... REQUIRE ...

功能 已弃用

CREATE BTREE INDEX ...

B 树索引已弃用。

用于字符串查询的 B 树索引被替换为

CREATE TEXT INDEX ...

用于空间查询的B树索引替换为

CREATE POINT INDEX ...

用于一般查询或属性值类型的B树索引替换为

CREATE RANGE INDEX ...

这些新索引可以组合用于多种用例。

功能 已弃用

CREATE INDEX
...
OPTIONS "{" btree-option: btree-value[, ...] "}"

功能 已弃用

SHOW BTREE INDEXES

B 树索引已弃用。

替换为

SHOW {POINT | RANGE | TEXT} INDEXES

功能 已弃用

USING BTREE INDEX

B 树索引已弃用。

替换为

USING {POINT | RANGE | TEXT} INDEX

功能 已弃用

CREATE CONSTRAINT
...
OPTIONS "{" btree-option: btree-value[, ...] "}"

具有 B 树选项的节点键和属性唯一性约束已弃用。

替换为

CREATE CONSTRAINT
...
OPTIONS "{" range-option: range-value[, ...] "}"

用于字符串属性的约束还需要额外的文本索引才能正确覆盖字符串查询。用于点属性的约束还需要额外的点索引才能正确覆盖空间查询。

功能 已弃用

distance(n.prop, point({x:0, y:0})

替换为

point.distance(n.prop, point({x:0, y:0})

功能 已弃用

point({x:0, y:0}) <= point({x:1, y:1}) <= point({x:2, y:2})

在空间点上使用不等式运算符 <>>= 的功能已弃用。请改用

point.withinBBox(point({x:1, y:1}), point({x:0, y:0}), point({x:2, y:2}))

功能 已弃用

MATCH (n)
RETURN
CASE n.prop
    WHEN null THEN 'one'
    ELSE 'two'
END

目前,如果 n.propnull,则返回 'one'。由于 null = null 在 Cypher 中返回 false,因此在将来的版本中,WHEN 表达式将不再匹配。

请改用 IS NULL

MATCH (n)
RETURN
CASE
    WHEN n.prop IS NULL THEN 'one'
    ELSE 'two'
END

新功能

功能 详情

功能 新增

CALL {
  ...
} IN TRANSACTIONS

用于在单独的事务中评估子查询的新子句。通常用于修改或导入大量数据时。请参阅 CALL { ... } IN TRANSACTIONS

语法

CREATE CONSTRAINT FOR ... REQUIRE ...

用于创建约束的新语法,适用于所有约束类型。

功能 新增

CREATE CONSTRAINT [constraint_name] [IF NOT EXISTS]
FOR (n:LabelName)
REQUIRE (n.propertyName_1, …, n.propertyName_n) IS UNIQUE
[OPTIONS "{" option: value[, ...] "}"]

属性唯一性约束现在允许使用多个属性,确保属性值的组合是唯一的。

功能 已弃用

DROP CONSTRAINT
ON (n:LabelName)
ASSERT (n.propertyName_1, …, n.propertyName_n) IS UNIQUE

属性唯一性约束现在允许使用多个属性。

替换为

DROP CONSTRAINT name [IF EXISTS]

语法

CREATE CONSTRAINT [constraint_name] [IF NOT EXISTS]
FOR ...
REQUIRE ... IS NOT NULL
OPTIONS "{" "}"

存在约束现在允许使用 OPTIONS 映射,但是,目前映射中没有可用值。

功能 新增

CREATE LOOKUP INDEX [index_name] [IF NOT EXISTS]
FOR ... ON ...
OPTIONS "{" option: value[, ...] "}"

令牌查找索引现在允许使用 OPTIONS 映射来指定索引提供程序。

功能 新增

CREATE TEXT INDEX ...

允许在具有特定标签或关系类型以及属性组合的节点或关系上创建文本索引。可以使用其名称删除它们。

功能 新增

CREATE RANGE INDEX ...

允许在具有特定标签或关系类型以及属性组合的节点或关系上创建范围索引。可以使用其名称删除它们。

功能 新增

CREATE CONSTRAINT
...
OPTIONS "{" indexProvider: 'range-1.0' "}"

允许通过在 OPTIONS 映射中提供范围索引提供程序来创建由范围索引支持的节点键和属性唯一性约束。

功能 新增

CREATE POINT INDEX ...

允许在具有特定标签或关系类型以及属性组合的节点或关系上创建点索引。可以使用其名称删除它们。

语法
新权限

IMPERSONATE

允许用户承担另一个用户权限的新权限。

功能 新增

SHOW TRANSACTION[S] [transaction-id[,...]]
[YIELD { * | field[, ...] } [ORDER BY field[, ...]] [SKIP n] [LIMIT n]]
[WHERE expression]
[RETURN field[, ...] [ORDER BY field[, ...]] [SKIP n] [LIMIT n]]

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

transaction-id 是一个或多个带引号的 STRING 值、一个 STRING 参数或一个列表参数组成的逗号分隔列表。

此功能替换了 dbms.listTransactionsdbms.listQueries 过程。

功能 新增

TERMINATE TRANSACTION[S] transaction-id[,...]

终止当前服务器上的事务。

transaction-id 是一个或多个带引号的 STRING 值、一个 STRING 参数或一个列表参数组成的逗号分隔列表。

此功能替换了 dbms.killTransactiondbms.killTransactionsdbms.killQuerydbms.killQueries 过程。

功能 新增

ALTER DATABASE ...  [IF EXISTS]
SET ACCESS {READ ONLY | READ WRITE}

用于通过更改数据库访问模式来修改数据库的新 Cypher 命令。

功能 新增
新权限

ALTER DATABASE

允许用户修改数据库的新权限。

功能 新增
新权限

SET DATABASE ACCESS

允许用户修改数据库访问模式的新权限。

功能 新增

CREATE ALIAS ... [IF NOT EXISTS]
FOR DATABASE ...

用于创建数据库名称别名的新的 Cypher 命令。远程别名仅在 Neo4j 4.4.8 及更高版本中受支持。

功能 新增

CREATE OR REPLACE ALIAS ...
FOR DATABASE ...

用于创建或替换数据库名称别名的新的 Cypher 命令。远程别名仅在 Neo4j 4.4.8 及更高版本中受支持。

功能 新增

ALTER ALIAS ... [IF EXISTS]
SET DATABASE ...

用于更改别名的新的 Cypher 命令。远程别名仅在 Neo4j 4.4.8 及更高版本中受支持。

功能 新增

DROP ALIAS ... [IF EXISTS] FOR DATABASE

用于删除数据库别名的新的 Cypher 命令。

功能 新增

SHOW ALIASES FOR DATABASE

用于列出数据库别名的新的 Cypher 命令。仅在 Neo4j 4.4.8 及更高版本中受支持。

功能 新增
新权限

ALIAS MANAGEMENT

允许用户创建、修改、删除和列出别名的新的权限。仅在 Neo4j 4.4.8 及更高版本中受支持。

功能 新增
新权限

CREATE ALIAS

允许用户创建别名的新的权限。仅在 Neo4j 4.4.8 及更高版本中受支持。

功能 新增
新权限

ALTER ALIAS

允许用户修改别名的新的权限。仅在 Neo4j 4.4.8 及更高版本中受支持。

功能 新增
新权限

DROP ALIAS

允许用户删除别名的新的权限。仅在 Neo4j 4.4.8 及更高版本中受支持。

功能 新增
新权限

SHOW ALIAS

允许用户显示别名的新的权限。仅在 Neo4j 4.4.8 及更高版本中受支持。

语法

MATCH (n:N {prop1: 42} WHERE n.prop2 > 42)

启用在节点模式内内联 WHERE 子句的新语法。

Neo4j 4.3

已弃用的功能

功能 详情

语法 已弃用

CREATE CONSTRAINT [name]
ON (node:Label)
ASSERT exists(node.property)

替换为

CREATE CONSTRAINT [name]
ON (node:Label)
ASSERT node.property IS NOT NULL

语法 已弃用

CREATE CONSTRAINT [name]
ON ()-[rel:REL]-()
ASSERT exists(rel.property)

替换为

CREATE CONSTRAINT [name]
ON ()-[rel:REL]-()
ASSERT rel.property IS NOT NULL

语法 已弃用

exists(prop)

替换为

prop IS NOT NULL

语法 已弃用

NOT exists(prop)

替换为

prop IS NULL

语法 已弃用
SHOW INDEXESSHOW CONSTRAINTSBRIEF [OUTPUT]

由默认输出列替换。

语法 已弃用
SHOW INDEXESSHOW CONSTRAINTSVERBOSE [OUTPUT]

替换为

YIELD *

语法 已弃用

SHOW EXISTS CONSTRAINTS

替换为

SHOW [PROPERTY] EXIST[ENCE] CONSTRAINTS

仍然允许 BRIEFVERBOSE,但不允许 YIELDWHERE

语法 已弃用

SHOW NODE EXISTS CONSTRAINTS

替换为

SHOW NODE [PROPERTY] EXIST[ENCE] CONSTRAINTS

仍然允许 BRIEFVERBOSE,但不允许 YIELDWHERE

语法 已弃用

SHOW RELATIONSHIP EXISTS CONSTRAINTS

替换为

SHOW RELATIONSHIP [PROPERTY] EXIST[ENCE] CONSTRAINTS

仍然允许 BRIEFVERBOSE,但不允许 YIELDWHERE

语法 已弃用
对于权限命令

ON DEFAULT DATABASE

替换为

ON HOME DATABASE

语法 已弃用
对于权限命令

ON DEFAULT GRAPH

替换为

ON HOME GRAPH

语法 已弃用

MATCH (a) RETURN (a)--()

生成路径列表的模式表达式已弃用,但它们仍可作为存在谓词使用,例如在 WHERE 子句中。请改用模式推导

MATCH (a) RETURN [p=(a)--() | p]

更新的功能

功能 详情

功能 已更新

SHOW INDEXES WHERE ...

现在允许过滤

SHOW INDEXES

功能 已更新

SHOW CONSTRAINTS WHERE ...

现在允许过滤

SHOW CONSTRAINTS

功能 已更新

SHOW INDEXES YIELD ...
[WHERE ...]
[RETURN ...]

现在允许 YIELDWHERERETURN 子句用于 SHOW INDEXES 以更改输出。

功能 已更新

SHOW CONSTRAINTS YIELD ...
[WHERE ...]
[RETURN ...]

现在允许 YIELDWHERERETURN 子句用于 SHOW CONSTRAINTS 以更改输出。

语法 已更新

SHOW [PROPERTY] EXIST[ENCE] CONSTRAINTS

用于过滤属性存在约束的 SHOW CONSTRAINTS 的新语法。
允许 YIELDWHERE,但不允许 BRIEFVERBOSE

语法 已更新

SHOW NODE [PROPERTY] EXIST[ENCE] CONSTRAINTS

用于过滤节点属性存在约束的 SHOW CONSTRAINTS 的新语法。
允许 YIELDWHERE,但不允许 BRIEFVERBOSE

语法 已更新

SHOW REL[ATIONSHIP] [PROPERTY] EXIST[ENCE] CONSTRAINTS

用于过滤关系属性存在约束的 SHOW CONSTRAINTS 的新语法。
允许 YIELDWHERE,但不允许 BRIEFVERBOSE

功能 已更新

SHOW FULLTEXT INDEXES

现在允许轻松过滤 SHOW INDEXES 上的全文本索引。
允许 YIELDWHERE,但不允许 BRIEFVERBOSE

功能 已更新

SHOW LOOKUP INDEXES

现在允许轻松过滤 SHOW INDEXES 上的令牌查找索引。
允许 YIELDWHERE,但不允许 BRIEFVERBOSE

新功能

功能 详情

语法

CREATE DATABASE ...
[OPTIONS {...}]

用于将选项传递给 CREATE DATABASE 的新语法。这可用于指定特定的集群节点以从中播种数据。

语法

CREATE CONSTRAINT [name]
ON (node:Label)
ASSERT node.property IS NOT NULL

用于创建节点属性存在约束的新语法。

语法

CREATE CONSTRAINT [name]
ON ()-[rel:REL]-()
ASSERT rel.property IS NOT NULL

用于创建关系属性存在约束的新语法。

语法

ALTER USER name IF EXISTS ...

使更改用户成为幂等的。如果指定的名称不存在,则不会抛出错误。

语法

ALTER USER ...
SET HOME DATABASE ...

现在允许设置用户的 home 数据库。

语法

ALTER USER ...
REMOVE HOME DATABASE

现在允许删除用户的 home 数据库。

语法

CREATE USER ...
SET HOME DATABASE ...

CREATE USER 现在允许设置用户的 home 数据库。

语法

SHOW HOME DATABASE

用于显示当前用户的 home 数据库的新语法。

语法
新权限

SET USER HOME DATABASE

用于管理更改用户 home 数据库的权限的新 Cypher 命令。

语法
对于权限命令

ON HOME DATABASE

用于影响 home 数据库的权限的新语法。

语法
对于权限命令

ON HOME GRAPH

用于影响 home 图的权限的新语法。

语法

CREATE FULLTEXT INDEX ...

允许在节点或关系上创建全文本索引。可以使用其名称删除它们。

功能 新增

CREATE INDEX FOR ()-[r:TYPE]-() ...

允许在具有特定关系类型和属性组合的关系上创建索引。可以使用其名称删除它们。

功能 新增

CREATE LOOKUP INDEX ...

为具有任何标签的节点或具有任何关系类型的关系创建令牌查找索引。可以使用其名称删除它们。

功能 新增

RENAME ROLE

用于更改角色名称的新 Cypher 命令。

功能 新增

RENAME USER

用于更改用户名称的新 Cypher 命令。

功能 新增

SHOW PROCEDURE[S]
[EXECUTABLE [BY {CURRENT USER | username}]]
[YIELD ...]
[WHERE ...]
[RETURN ...]

用于列出过程的新 Cypher 命令。

功能 新增

SHOW [ALL | BUILT IN | USER DEFINED] FUNCTION[S]
[EXECUTABLE [BY {CURRENT USER | username}]]
[YIELD ...]
[WHERE ...]
[RETURN ...]

用于列出函数的新 Cypher 命令。

Neo4j 4.2

已弃用的功能

功能 详情

语法 已弃用

0...

替换为0o...

语法 已弃用

0X...

仅支持0x...(小写x)。

语法 已弃用

CALL { RETURN 1 }

子查询 RETURN 子句中的未别名表达式已弃用。替换为

CALL { RETURN 1 AS one }

更新的功能

功能 详情

功能 已更新

SHOW ROLE name PRIVILEGES

现在可以处理多个角色。

SHOW ROLES n1, n2, ... PRIVILEGES

功能 已更新

SHOW USER name PRIVILEGES

现在可以处理多个用户。

SHOW USERS n1, n2, ... PRIVILEGES

功能 已更新

round(expression, precision)

round() 函数现在可以接受一个额外的参数来指定舍入精度。

功能 已更新

round(expression, precision, mode)

round() 函数现在可以接受两个额外的参数来指定舍入精度和舍入模式。

新功能

功能 详情

功能 新增

SHOW PRIVILEGES [AS [REVOKE] COMMAND[S]]

权限现在可以显示为 Cypher 命令。

语法

DEFAULT GRAPH

数据库权限的 Cypher 命令的新可选部分。

语法

0o...

Cypher 现在将以 0o 为前缀的字面量解释为八进制整数字面量。

语法

SET [PLAINTEXT | ENCRYPTED] PASSWORD

对于 CREATE USERALTER USER,现在可以在不知道纯文本密码但有加密密码可用时设置(或更新)密码。

功能 新增
新权限

EXECUTE

用于管理执行过程和用户定义函数的权限的新 Cypher 命令。请参阅 DBMS EXECUTE 权限

语法

CREATE [BTREE] INDEX ... [OPTIONS {...}]

允许在创建索引时设置索引提供程序和索引配置。

语法

CREATE CONSTRAINT ... IS NODE KEY [OPTIONS {...}]

允许在创建节点键约束时为后备索引设置索引提供程序和索引配置。

语法

CREATE CONSTRAINT ... IS UNIQUE [OPTIONS {...}]

允许在创建属性唯一性约束时为后备索引设置索引提供程序和索引配置。

语法

SHOW CURRENT USER

用于显示当前登录用户和角色的新 Cypher 命令。

功能 新增

SHOW [ALL | BTREE] INDEX[ES] [BRIEF | VERBOSE [OUTPUT]]

用于列出索引的新 Cypher 命令。

替换了 db.indexesdb.indexDetails(详细)和部分 db.schemaStatements(详细)过程。

功能 新增

SHOW [ALL | UNIQUE | NODE EXIST[S] | RELATIONSHIP EXIST[S] | EXIST[S] | NODE KEY] CONSTRAINT[S] [BRIEF | VERBOSE [OUTPUT]]

用于列出约束的新 Cypher 命令。

替换了 db.constraints 和部分 db.schemaStatements(详细)过程。

功能 新增
新权限

SHOW INDEX

用于管理列出索引权限的新 Cypher 命令。

功能 新增
新权限

SHOW CONSTRAINTS

用于管理列出约束权限的新 Cypher 命令。

Neo4j 4.1.3

新功能

功能 详情

语法

CREATE INDEX [name] IF NOT EXISTS FOR ...

使索引创建成为幂等的。如果名称或架构相同的索引已存在,则不会抛出错误。

语法

DROP INDEX name IF EXISTS

使索引删除成为幂等的。如果名称相同的索引不存在,则不会抛出错误。

语法

CREATE CONSTRAINT [name] IF NOT EXISTS ON ...

使约束创建成为幂等的。如果名称或类型和架构相同的约束已存在,则不会抛出错误。

语法

DROP CONSTRAINT name IF EXISTS

使约束删除成为幂等的。如果名称相同的约束不存在,则不会抛出错误。

Neo4j 4.1

受限功能

功能 详情

功能 受限

REVOKE ...

撤销复合权限时不再撤销子权限,例如,撤销 INDEX MANAGEMENT 时,任何 CREATE INDEXDROP INDEX 权限将不再被撤销。

功能 受限

ALL DATABASE PRIVILEGES

不再包含权限START DATABASESTOP DATABASE

更新的功能

功能 详情

过程 已更新

queryId

queryId过程格式已更改,不再包含数据库名称。例如,mydb-query-123现在为query-123。此更改会影响内置过程dbms.listQueries()dbms.listActiveLocks(queryId)dbms.killQueries(queryIds)dbms.killQuery(queryId)

功能 已更新

SHOW PRIVILEGES

返回的权限更接近原始的授予和拒绝,例如,如果授予MATCH,则命令将显示该特定权限,而不是TRAVERSEREAD权限。添加了对YIELDWHERE子句的支持,以允许过滤结果。

新功能

功能 详情

功能 新增
新角色

PUBLIC

PUBLIC角色会自动分配给所有用户,从而为他们提供一组基本权限。

语法
对于权限

REVOKE MATCH

现在可以撤销MATCH权限。

功能 新增

SHOW USERS

添加了对YIELDWHERE子句的支持,以允许过滤结果。

功能 新增

SHOW ROLES

添加了对YIELDWHERE子句的支持,以允许过滤结果。

功能 新增

SHOW DATABASES

添加了对YIELDWHERE子句的支持,以允许过滤结果。

功能 新增
事务管理权限

用于管理事务管理的新Cypher命令。

功能 新增
DBMS 用户管理权限

用于管理用户管理的新Cypher命令。

功能 新增
DBMS 数据库管理权限

用于管理数据库管理的新Cypher命令。

功能 新增
DBMS 权限管理权限

用于管理权限管理的新Cypher命令。

功能 新增

ALL DBMS PRIVILEGES

用于管理角色、用户、数据库和权限管理的新Cypher命令。

功能 新增

ALL GRAPH PRIVILEGES

用于管理读写权限的新Cypher命令。

功能 新增
写权限

用于管理写权限的新Cypher命令。

功能 新增

ON DEFAULT DATABASE

数据库权限的 Cypher 命令的新可选部分。

Neo4j 4.0

移除的功能

功能 详情

函数 已移除

rels()

relationships()取代。

函数 已移除

toInt()

toInteger()取代。

函数 已移除

lower()

toLower()取代。

函数 已移除

upper()

toUpper()取代。

函数 已移除

extract()

列表推导式取代。

函数 已移除

filter()

列表推导式取代。

功能 已移除
对于规则规划器

CYPHER planner=rule

RULE规划器在3.2中已被移除,但仍然可以通过使用STARTCREATE UNIQUE子句来触发。现在它被完全移除了。

功能 已移除
显式索引

3.2中移除RULE规划器是显式索引终结的开始。现在它们被完全移除,包括移除Neo4j 3.3到3.5的内置过程

功能 已移除
对于编译时运行时

CYPHER runtime=compiled

由新的pipelined运行时取代,该运行时涵盖更广泛的查询。

子句 已移除

CREATE UNIQUE

使用此子句运行查询将导致语法错误。

子句 已移除

START

使用此子句运行查询将导致语法错误。

语法 已移除

MATCH (n)-[:A|:B|:C {foo: 'bar'}]-() RETURN n

MATCH (n)-[:A|B|C {foo: 'bar'}]-() RETURN n取代。

语法 已移除

MATCH (n)-[x:A|:B|:C]-() RETURN n

MATCH (n)-[x:A|B|C]-() RETURN n取代。

语法 已移除

MATCH (n)-[x:A|:B|:C*]-() RETURN n

MATCH (n)-[x:A|B|C*]-() RETURN n取代。

语法 已移除

{parameter}

$parameter取代。

已弃用的功能

功能 详情

语法 已弃用

MATCH (n)-[rs*]-() RETURN rs

与Cypher 3.2中一样,它被替换为

MATCH p=(n)-[*]-() RETURN relationships(p) AS rs

语法 已弃用

CREATE INDEX ON :Label(prop)

CREATE INDEX FOR (n:Label) ON (n.prop)取代。

语法 已弃用

DROP INDEX ON :Label(prop)

DROP INDEX name取代。

语法 已弃用

DROP CONSTRAINT ON (n:Label) ASSERT (n.prop) IS NODE KEY

DROP CONSTRAINT name取代。

语法 已弃用

DROP CONSTRAINT ON (n:Label) ASSERT (n.prop) IS UNIQUE

DROP CONSTRAINT name取代。

语法 已弃用

DROP CONSTRAINT ON (n:Label) ASSERT exists(n.prop)

DROP CONSTRAINT name取代。

语法 已弃用

DROP CONSTRAINT ON ()-[r:Type]-() ASSERT exists(r.prop)

DROP CONSTRAINT name取代。

受限的功能

功能 详情

函数 受限

length()

仅限于在路径上工作。有关更多详细信息,请参阅length()

函数 受限

size()

仅适用于字符串、列表和模式推导式,不再适用于路径。对于5.0以上版本,请改用COUNT表达式

RETURN COUNT { (a)-[]->(b) }

对于5.0以下版本,请改用模式推导式

RETURN size([ (a)-[]->(b) | a ])

有关更多详细信息,请参阅size()Count 子查询

更新的功能

功能 详情

语法 已扩展

CREATE CONSTRAINT [name] ON ...

创建约束语法现在可以包含名称。

此命令的IS NODE KEYIS UNIQUE版本分别替换了过程db.createNodeKeydb.createUniquePropertyConstraint

新功能

功能 详情

功能 新增
流水线运行时

CYPHER runtime=pipelined

此Neo4j企业版独有功能涉及一个具有许多性能增强的新运行时。

功能 新增
多数据库管理

用于管理多个数据库的新Cypher命令。

功能 新增
访问控制

用于管理基于角色的访问控制的新Cypher命令。

功能 新增
细粒度安全

用于管理dbms、数据库、图形和子图形访问控制的新Cypher命令。

语法

CREATE INDEX [name] FOR (n:Label) ON (n.prop)

用于创建索引的新语法,其中可以包含名称。

替换了db.createIndex过程。

语法

DROP INDEX name

新命令用于按名称删除索引。

语法

DROP CONSTRAINT name

新命令用于按名称删除约束,无论类型如何。

子句 新增

WHERE EXISTS {...}

EXISTS子查询是用于过滤MATCHOPTIONAL MATCHWITH子句结果的子子句。

子句 新增

USE neo4j

用于指定查询或查询部分针对哪个图形执行的新子句。

Neo4j 3.5

已弃用的功能

功能 详情

功能 已弃用
编译时运行时

CYPHER runtime=compiled

编译时运行时将在下一个主要版本中停止使用。它可能仍用于默认查询以避免出现回归,但无法显式请求它。

函数 已弃用

extract()

列表推导式取代。

函数 已弃用

filter()

列表推导式取代。

Neo4j 3.4

功能 类型 更改 详情

空间点类型

功能

修订

点——无论使用哪个坐标参考系统——都可以存储为属性,并且能够由索引支持。在此之前,点仅是虚拟属性。

point() - Cartesian 3D

函数

已添加

point() - WGS 84 3D

函数

已添加

randomUUID()

函数

已添加

时间类型

功能

已添加

支持存储、索引和处理以下时间类型:Date、Time、LocalTime、DateTime、LocalDateTime和Duration。

时间函数

功能

已添加

允许为每种时间类型(Date、Time、LocalTime、DateTime、LocalDateTime和Duration)创建和操作值的函数。

时间运算符

功能

已添加

允许为每种时间类型(Date、Time、LocalTime、DateTime、LocalDateTime和Duration)操作值的运算符。

toString()

函数

已扩展

现在还允许时间值作为输入(即Date、Time、LocalTime、DateTime、LocalDateTime或Duration类型的值)。

Neo4j 3.3

功能 类型 更改 详情

START

子句

已移除

与Cypher 3.2中一样,任何使用START子句的查询都将恢复到Cypher 3.1 planner=rule。但是,有Neo4j 3.3到3.5版本的内置过程用于访问显式索引。这些过程将使用户能够将当前版本的Cypher和成本规划器与这些索引一起使用。例如CALL db.index.explicit.searchNodes('my_index','email:me*')

CYPHER runtime=slotted(更快的解释型运行时)

功能

已添加

仅限Neo4j企业版

max()min()

函数

已扩展

现在还支持对包含字符串和/或数字列表的集合进行聚合,以及对包含字符串、数字和字符串和/或数字列表的集合进行聚合

Neo4j 3.2

功能 类型 更改 详情

CYPHER planner=rule(规则规划器)

功能

已移除

所有查询现在都使用成本规划器。任何以这种方式添加前缀的查询都将回退到使用Cypher 3.1。

CREATE UNIQUE

子句

已移除

运行此类查询将回退到使用Cypher 3.1(并使用规则规划器)

START

子句

已移除

运行此类查询将回退到使用Cypher 3.1(并使用规则规划器)

MATCH (n)-[rs*]-() RETURN rs

语法

已弃用

MATCH p=(n)-[*]-() RETURN relationships(p) AS rs取代

MATCH (n)-[:A|:B|:C {foo: 'bar'}]-() RETURN n

语法

已弃用

MATCH (n)-[:A|B|C {foo: 'bar'}]-() RETURN n取代

MATCH (n)-[x:A|:B|:C]-() RETURN n

语法

已弃用

MATCH (n)-[x:A|B|C]-() RETURN n取代

MATCH (n)-[x:A|:B|:C*]-() RETURN n

语法

已弃用

MATCH (n)-[x:A|B|C*]-() RETURN n取代

用户定义的聚合函数

功能

已添加

复合索引

索引

已添加

节点键

索引

已添加

仅限Neo4j企业版

CYPHER runtime=compiled(编译时运行时)

功能

已添加

仅限Neo4j企业版

reverse()

函数

已扩展

现在还允许列表作为输入

max()min()

函数

已扩展

现在还支持对包含字符串和数字的集合进行聚合

Neo4j 3.1

功能 类型 更改 详情

rels()

函数

已弃用

relationships()取代

toInt()

函数

已弃用

toInteger()取代

lower()

函数

已弃用

toLower()取代

upper()

函数

已弃用

toUpper()取代

toBoolean()

函数

已添加

地图投影

语法

已添加

模式理解

语法

已添加

用户定义函数

功能

已添加

CALL...YIELD...WHERE

子句

已扩展

使用WHERE可以进一步过滤YIELD返回的记录

Neo4j 3.0

功能 类型 更改 详情

has()

函数

已移除

已替换为 exists()

str()

函数

已移除

已替换为 toString()

{parameter}

语法

已弃用

已替换为 $parameter

properties()

函数

已添加

CALL [...YIELD]

子句

已添加

point() - 笛卡尔二维

函数

已添加

point() - WGS 84 二维

函数

已添加

distance()

函数

已添加

用户定义过程

功能

已添加

toString()

函数

已扩展

现在也允许布尔值作为输入