弃用、新增和兼容性

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

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

Neo4j 2025.04

新功能

功能 详情

功能 新增

GRANT READ {*} ON GRAPH * FOR ()-[r]-() WHERE r.securityLevel > 3 TO regularUsers
GRANT TRAVERSE ON GRAPH * FOR ()-[r:KNOWS]-() WHERE r.classification IS NULL TO regularUsers
DENY MATCH {*} ON GRAPH * FOR ()-[r]-() WHERE r.classification <> 'UNCLASSIFIED' TO regularUsers

企业版现在支持基于属性的关系访问控制。欲了解更多信息,请参阅基于属性的访问控制

Neo4j 2025.03

新功能

功能 详情

功能 新增

UNWIND range(1, 100) AS i
CALL (i) {
    MERGE (u:User {id: i})
    ON CREATE SET u.created = timestamp()
} IN TRANSACTIONS ON ERROR RETRY 1 SECOND THEN FAIL

CALL { …​ } IN TRANSACTIONS 的新错误处理选项:ON ERROR RETRY。此选项对因瞬时错误导致事务批次失败的重试之间应用指数延迟,并可选择最大重试持续时间,如果事务未能在给定时间内成功,则根据指定的备用错误模式处理失败。欲了解更多信息,请参阅事务中的 CALL 子查询 → ON ERROR RETRY

Neo4j 2025.01

弃用功能

功能 详情

功能 已弃用

CYPHER eagerAnalyzer=ir MATCH (a)-->(b) DELETE b RETURN a
CYPHER eagerAnalyzer=lp MATCH (a)-->(b) DELETE b RETURN a

Cypher 查询选项 eagerAnalyzer 已弃用,并将被移除而无替代。无论提供的值如何,急切分析都会系统地对逻辑计划执行。

Neo4j 5.26

弃用功能

功能 详情

功能 已弃用

CREATE ... INDEX ... OPTIONS { indexProvider: ... }
CREATE ... CONSTRAINTS ... OPTIONS { indexProvider: ... }

在创建索引或约束时,在 OPTIONS 映射中指定索引提供程序已弃用。

这也意味着向量索引的索引提供程序 vector-1.0 已弃用。请改用默认索引提供程序 vector-2.0

功能 已弃用

MATCH (where {...})
MATCH (...)-[where {...}]->()

在节点或关系模式中直接跟属性键值表达式使用的名为 where(或其任何大小写变体,如 WHERE)的变量已弃用。要继续使用此名称的变量,请使用反引号引用变量名。

  • 节点模式:MATCH (`where` { …​ })

  • 关系模式:MATCH (…​)-[`where` { …​ }]→()

功能 已弃用

... + n:A
... + n:A&B
... + n:A&B|C

将未加括号的标签表达式谓词用作 + 的右侧操作数已弃用。请在 + 的右侧为标签表达式谓词加上括号:…​ + (n:A)

功能 已弃用

CASE x ... WHEN is :: STRING THEN ... END

简单 CASE 表达式中,将名为 is(或其任何大小写变体,如 IS)的变量用作 WHEN 操作数已弃用。要在简单 CASE 表达式中继续使用此名称的变量,请使用反引号引用变量名:CASE x …​ WHEN `is` :: STRING THEN …​ END

功能 已弃用

CASE x ... WHEN contains + 1 THEN ... END
CASE x ... WHEN contains - 1 THEN ... END

简单 CASE 表达式的 WHEN 操作数中,在加法或减法操作中使用名为 contains(或其任何大小写变体,如 CONTAINS)的变量已弃用。要继续使用此名称的变量,请使用反引号引用变量名。

  • 加法:CASE x …​ WHEN `contains` + 1 THEN …​ END

  • 减法:CASE x …​ WHEN `contains` - 1 THEN …​ END

功能 已弃用

CASE x ... WHEN in[1] THEN ... END
CASE x ... WHEN in["abc"] THEN ... END

简单 CASE 表达式的 WHEN 操作数中,对名为 in(或其任何大小写变体,如 IN)的变量使用 [] 运算符已弃用。要继续使用此名称的变量,请使用反引号引用变量名。

  • CASE x …​ WHEN `in`[1] THEN …​ END

  • CASE x …​ WHEN `in`["abc"] THEN …​ END

功能 已弃用

CALL db.schema.nodeTypeProperties() YIELD propertyTypes RETURN propertyTypes;
CALL db.schema.relTypeProperties() YIELD propertyTypes RETURN propertyTypes;

过程 db.schema.nodeTypeProperties()db.schema.relTypeProperties() 当前返回的 propertyTypes 列生成一个字符串列表,表示给定属性的潜在 Java 类型。在即将发布的 Neo4j 主要版本中,这将更新为表示该属性的可能 Cypher 类型。有关所有可用的 Cypher 类型,请参阅类型及其同义词一节。

功能 已弃用

CREATE DATABASE db OPTIONS { seedCredentials: ...,  seedConfig: ... }

CREATE DATABASE 选项 seedCredentials 已弃用。对于从云存储进行种子填充,建议使用 CloudSeedProvider,它将从标准位置读取云凭据和配置。欲了解更多信息,请参阅从 URI 创建数据库 → CloudSeedProvider

功能 已弃用

CREATE DATABASE db OPTIONS { storeFormat: 'standard' }

CREATE DATABASE db OPTIONS { storeFormat: 'high_limit' }

standardhigh_limit 存储格式已弃用。因此,使用这些格式创建数据库也已弃用。有关这些格式弃用的更多信息,请参阅存储格式 → 格式弃用

功能 已弃用

USE my.db ...

USE 子句中,未加引号包含 . 的数据库和别名已弃用,除非 . 用于指示该数据库或别名属于复合数据库。包含 . 的名称应使用反引号引用。例如,USE `my.db` 是有效的。

更新功能

功能 详情

功能 已更新

USE graph.byElementId("4:c0a65d96-4993-4b0c-b036-e7ebd9174905:0")
MATCH (n) RETURN n

graph.byElementId() 现在可以在标准数据库和复合数据库上使用。以前它只能在复合数据库上使用。

功能 已更新

CREATE DATABASE foo TOPOLOGY $p PRIMARIES $s SECONDARIES
ALTER DATABASE foo SET TOPOLOGY $p PRIMARIES $s SECONDARIES

CREATE DATABASEALTER DATABASE 命令现在接受 TOPOLOGY 配置的参数。

功能 已更新

GRANT READ {*} ON GRAPH * FOR (n) WHERE n.createdAt > date('2024-10-25') TO regularUsers

基于属性的访问控制现在支持空间时间值。

功能 已更新

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] 子句中使用不同顺序的返回项已取消弃用。

新功能

功能 详情

功能 新增

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})

增加了在 MATCHCREATEMERGE 子句中动态引用节点标签和关系类型的能力。此外,还引入了在使用 LOAD CSV 时动态指定 CSV 列的能力。

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,它是与 GQL 兼容的 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 查询。

功能 新增

CYPHER 5
RETURN 1

引入了在查询前添加 CYPHER 5 的能力。这确保了查询使用 Cypher 版本 5 运行。

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

关键字 DISTINCT 现在可以添加到 UNION 之后,作为带去重功能的 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() 函数。此函数根据指定的标准化形式(可以是 NFCNFDNFKCNFKD 类型)标准化 STRING

功能 新增

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() 指定,从节点存储中按 ID 读取一个或多个节点。更多信息可在此处找到。

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 1MATCH 或:

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] ...

IMMUTABLE 现在可以与 REVOKE 命令一起指定,以指明只应撤销不可变权限。

功能 已更新

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'

这只是一个语义更改。由于在 Cypher 中 null = null 返回 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 现在支持 InfinityNaN 值的浮点字面量。NaN 定义了一个静默的非数字值,并且在算术运算中不抛出任何异常。这两个值都根据浮点标准 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'。由于在 Cypher 中 null = null 返回 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 子句的新语法。

© . All rights reserved.