添加、弃用、移除与兼容性

Cypher® 是一门不断演进的语言。新功能会持续加入,有时某些功能会被弃用并最终移除。Cypher 的所有更改都会在 Neo4j 的各个版本中引入。

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

Neo4j 2026.02+ 数据库明确将 Cypher 25 设置为其查询语言。Cypher 25 在 Neo4j 2025.06 中引入,仅可在 Neo4j 2025.06+ 数据库上使用。在 Cypher 25 中移除的功能仍可在 Neo4j 2025.06+ 数据库上使用,方法是在查询前加上 CYPHER 5,或者将 Cypher 5 设置为数据库的默认语言。有关更多信息,请参阅 选择 Cypher 版本

Neo4j 2026.03

Cypher 25 新增功能

特性 详细信息

功能 新增

路径模式(Path modes)。

Cypher 新增了路径模式,用于确定节点和关系是否可以在图模式匹配中出现多次,并与匹配模式协同工作。

功能 新增

PROPERTY_EXISTS 谓词

新增了 PROPERTY_EXISTS(element, propertyName) 谓词,用于测试节点或关系上是否存在某个属性且该属性值不为 NULL

功能 新增

SHOW TRANSACTIONScurrentQueryProgress

SHOW TRANSACTIONS 的输出表中新增了 currentQueryProgress 列。详情请参阅 SHOW TRANSACTIONS

Neo4j 2026.02

在 Cypher 25 中已更新

特性 详细信息

功能 更新

新数据库现在明确将 Cypher 25 设置为其查询语言。

新的自管理安装和新的 Aura 实例现在明确将 Cypher 25 设置为其查询语言。新的自管理部署在其 neo4j.conf 文件中包含设置 db.query.default_language=CYPHER_25。现有部署将保留其 neo4j.conf 文件。两者均可通过设置 db.query.default_language 进行调整。

+ 在 Aura 中,Cypher 25 是新建组织默认使用的语言。创建数据库时默认绑定的查询语言由组织设置“默认 Cypher 版本”决定,并可手动更改。

功能 更新

SHOW CONSTRAINTS YIELD name, enforcedLabel, classification

引入了 SHOW CONSTRAINTS 返回的两列新数据

  • enforcedLabel:显示属于节点元素类型的隐含标签,以及属于关系元素类型的源节点和目标节点标签。

  • classification:显示图类型中约束的状态。

功能 更新

SHOW [NODE] EXIST[ENCE] CONSTRAINTS

SHOW CONSTRAINTS 命令允许的 NODE EXIST[ENCE]EXIST[ENCE] 类型过滤选项现在也会返回节点标签存在性约束(作为图类型中节点元素类型的一部分创建)。有关更多信息,请参阅 语法 → 类型过滤器

功能 更新

SHOW CONSTRAINTS

SHOW CONSTRAINTS 返回的 type 列现在可以返回三种额外的约束类型:NODE_LABEL_EXISTENCERELATIONSHIP_SOURCE_LABELRELATIONSHIP_TARGET_LABEL。这些新的约束类型是在设置图类型时作为节点和关系元素类型的一部分创建的。有关更多信息,请参阅 设置图类型

Cypher 25 新增功能

特性 详细信息

功能 新增

添加了性能提升运算符 MergeUniqueNode

MergeUniqueNodeMerge 运算符类似,但用于 MERGE 语句中使用的属性上存在唯一性约束的情况。

功能 新增 预览

ALTER CURRENT GRAPH TYPE SET {
    (:Person => :Resident {name :: STRING NOT NULL}),
    (:Pet => :Resident&Animal {healthCertificate :: STRING, name :: STRING}),
    (:City => {name :: STRING NOT NULL, population :: INTEGER}),
    (:Resident)-[:LIVES_IN => {since :: DATE NOT NULL}]->(:City)
}

引入了使用 ALTER CURRENT GRAPH TYPE SET 命令为数据库设置图类型的功能。图类型全局强制执行开放模式,为整个图提供明确的结构,并包含无法使用旧版 CREATE CONSTRAINT 语法创建的约束类型(节点标签存在性、关系源节点和关系目标节点约束)。有关更多信息,请参阅 设置图类型

功能 新增 预览

ALTER CURRENT GRAPH TYPE ADD {
  (p:Person => :Resident {name :: STRING, ssn :: INTEGER, nationality :: STRING})
    REQUIRE (p.name, p.ssn) IS KEY,
  CONSTRAINT pet_address FOR (pet:Pet) REQUIRE pet.address IS NOT NULL,
  (:Animal => {type :: STRING NOT NULL})
}

引入了使用 ALTER CURRENT GRAPH TYPE ADD 命令扩展图类型的功能。有关更多信息,请参阅 扩展图类型

功能 新增 预览

ALTER CURRENT GRAPH TYPE ALTER {
    (:Robot => :Resident&Machine {application :: STRING NOT NULL, id :: INTEGER NOT NULL}),
    (:Resident)-[:LIVES_IN => {since :: ANY NOT NULL}]->(:City)
}

引入了使用 ALTER CURRENT GRAPH TYPE ALTER 命令更改图类型中元素类型的功能。有关更多信息,请参阅 更改元素类型

功能 新增 预览

SHOW CURRENT GRAPH TYPE

引入了使用 SHOW CURRENT GRAPH TYPE 命令显示图类型的功能。有关更多信息,请参阅 显示图类型

功能 新增 预览

ALTER CURRENT GRAPH DROP {
  (:Pet =>),
  CONSTRAINT pet_address
}

引入了使用 ALTER CURRENT GRAPH TYPE DROP 命令从图类型中删除元素类型和约束的功能。有关更多信息,请参阅 删除图类型元素

功能 新增 函数的 GQL 命名别名

RETURN ceiling(1.2) AS c, ln(2.0) AS natural_log,
       char_length("Hello") AS len, lower("Neo4j") AS lower, upper("Neo4j") AS upper;
RETURN local_time() AS t, local_datetime() AS ldt,
       zoned_time() AS zt, zoned_datetime() AS zdt;
RETURN duration_between(date("2020-01-01"), date("2020-02-01")) AS d;
MATCH p = (a)-[r]->(b)
RETURN path_length(p) AS path_len;
UNWIND [1, 2, 3] AS n
RETURN collect_list(n) AS list,
       percentile_cont(n, 0.5) AS p50,
       percentile_disc(n, 0.5) AS p50_disc,
       stdev_samp(n) AS sd_samp,
       stdev_pop(n) AS sd_pop;

Cypher 现在提供 GQL 命名别名,以便为其他 GQL 实现编写的查询可以以最小的改动运行。添加的别名包括:ceiling(), local_time(), local_datetime(), zoned_time(), zoned_datetime(), duration_between(), path_length(), ln(), collect_list(), percentile_cont(), percentile_disc(), stdev_samp()stdev_pop()

Neo4j 2026.01

Cypher 25 已更新

特性 详细信息

功能 新增

CREATE VECTOR INDEX multiLabel
FOR (n:Label1|Label2)
ON n.embedding
OPTIONS {indexConfig: {`vector.dimensions`: 1536, `vector.similarity_function`: 'cosine'}}
CREATE VECTOR INDEX multiRelType
FOR ()-[r:REL_TYPE1|REL_TYPE2]-()
ON r.embedding
OPTIONS {indexConfig: {`vector.dimensions`: 1536, `vector.similarity_function`: 'cosine'}}
CREATE VECTOR INDEX additionalProperties
FOR (n:Label)
ON n.embedding
WITH [n.property1, n.property2]
OPTIONS {indexConfig: {`vector.dimensions`: 1536, `vector.similarity_function`: 'cosine'}}

向量索引现在可以拥有多个标签、关系类型,或者包含用于过滤的附加属性。

Cypher 25 新增功能

特性 详细信息

功能 新增

MATCH (n)
  SEARCH n IN (
    VECTOR INDEX nodeVectorIndex
    FOR $vectorEmbedding
    WHERE n.prop > 10
    LIMIT 5
  )
RETURN n
MATCH ()-[r]->()
  SEARCH r IN (
    VECTOR INDEX relVectorIndex
    FOR $vectorEmbedding
    LIMIT 5
  )
RETURN r

MATCHOPTIONAL MATCH 新增了 SEARCH 子句,用于根据向量相似度过滤结果。

功能 新增

引入了查询大小限制

引入了查询缓存的查询大小限制。此限制用于防止大型生成的查询文本字符串占用查询缓存中的内存。

Neo4j 2025.12

此版本无文档更新。

Neo4j 2025.11

Cypher 25 已更新

特性 详细信息

功能 更新

label,name
Actor,Henry Cavill
CREATE RANGE INDEX actor_has_name FOR (a:Actor) ON (a.name);

LOAD CSV WITH HEADERS FROM 'people.csv' AS row
MERGE (:$(row.label) { name: row.name })

Cypher 现在可以利用属性值上的索引来改进 MATCHMERGE 的执行性能,但需注意:

  • 仅支持范围索引上的精确查找(不支持全文或空间索引)。

  • 无法利用索引顺序,因此如果查询后续需要,规划器必须插入单独的排序操作。

  • 并行运行时查找和扫描是单线程的。

  • 规划器在为查询的动态部分生成结果时,不会组合多个属性索引查找。

Cypher 25 新增功能

特性 详细信息

功能 新增

RETURN coll.distinct([true, false, false, true, true, false])
RETURN coll.flatten([1, [2]]), coll.flatten([false, ['a']], 2);
RETURN coll.indexOf(['A', 'new', 'function'], 'new');
RETURN coll.insert([1, 2, 4], 2, 3);
RETURN coll.max([1.5, 2, 5.4, 0, 4]);
RETURN coll.min([1.5, 2, 5.4, 0, 4]);
RETURN coll.remove(['a', 'a', 'b', 'c', 'd'], 2);
RETURN coll.sort([3, 1, 4, 2, 'a', 'c', 'b']);

引入了八个基于集合的新 Cypher 函数。有关更多信息,请参阅 函数 → 列表函数

功能 新增

添加了性能提升运算符 MergeInto

MergeIntoMerge 运算符类似,但在模式的起始节点和结束节点在 MERGE 模式之外进行匹配时使用。

Neo4j 2025.10

Cypher 25 已更新

特性 详细信息

功能 更新

RETURN toFloatList(Vector([1, 2, 3], 3, INTEGER64)),
       toIntegerList(Vector([1, 2, 3], 3, INTEGER8)),
       vector.similarity.cosine(vector([3, 5, 7], 3, INT), vector([-1, -2, -3], 3, INT)),
       vector.similarity.euclidean(vector([3, 5, 7], 3, INT), vector([-1, -2, -3], 3, INT))

toFloatList(), toIntegerList(), vector.similarity.cosine()vector.similarity.euclidean() 函数现在接受 VECTOR 值作为输入参数。

功能 更新

RETURN datetime('11/18/1986', "MM/dd/yyyy") AS dt

以下时间类型构造函数已扩展可选参数 patterndate(), datetime(), localdatetime(), localtime(), time()duration()。这些模式与 2025.09 中引入的 format() 函数用于创建时间字符串的模式相同,因此允许将时间字符串解析为时间值。

Cypher 25 新增功能

特性 详细信息

功能 新增

VECTOR([1.05, 0.123, 5], 3, FLOAT32 NOT NULL)

引入了 VECTOR 值类型,可作为节点和关系上的嵌入属性存储,并利用 Neo4j 的向量索引GenAI 插件进行高效的语义检索。有关更多信息,请参阅 值和类型 → 向量

功能 新增

WITH vector([1, 2, 3], 3, INTEGER) AS vector
RETURN vector, valueType(vector) AS vectorType

用于构造 VECTOR 值的新 vector() 函数。

功能 新增

RETURN vector_dimension_count(vector([1, 2, 3], 3, INTEGER)) AS size

新的 vector_dimension_count() 函数,返回 VECTOR 值的维度。

功能 新增

RETURN vector_distance(vector([1, 2, 3], 3, INT), vector([1, 2, 4], 3, INT), COSINE) AS distance

新的 vector_distance() 函数,基于所选的 vectorDistanceMetric 算法返回两个 VECTOR 值之间的距离。

功能 新增

RETURN vector_norm(vector([1.0, 5.0, 3.0, 6.7], 4, FLOAT), EUCLIDEAN) AS norm

新的 vector_norm() 函数,返回给定向量与原点向量之间的距离。原点向量是与给定向量维度相同且所有坐标均为零的向量,使用指定的 vectorDistanceMetric 计算。

功能 新增

CREATE CONSTRAINT node_vector_constraint
FOR (n:Movie) REQUIRE n.embedding IS :: VECTOR<INT32>(42)
CREATE CONSTRAINT rel_vector_constraint
FOR ()-[r:CONTAINS]->() REQUIRE r.embedding IS :: VECTOR<FLOAT32>(1536)

引入了 VECTOR 属性类型约束。有关更多信息,请参阅 创建属性类型约束

Neo4j 2025.09

Cypher 25 新增功能

特性 详细信息

功能 新增

WITH datetime('1986-11-18T6:04:45.123456789+01:00[Europe/Berlin]') AS dt
RETURN format(dt, "MM/dd/yyyy") AS US, format(dt, "dd/MM/yyyy") AS EU

Cypher 新的 format() 函数可以创建时间实例和持续时间类型的动态格式化字符串表示。

功能 新增

新运算符:LockNodes

引入了 LockNodes 运算符,有时与 LockingMerge 运算符结合使用以锁定节点。

Neo4j 2025.08

Cypher 25 已更新

特性 详细信息

功能 更新

MATCH (p:Product) WHERE p.name <> "Coffee"
CALL (p) {
    MATCH (p)<-[:BUYS]-(c:Customer)-[:BUYS]->(otherProduct)
    RETURN c, otherProduct
    NEXT
    RETURN count(DISTINCT c) AS customers, 0 AS customersAlsoBuyingCoffee
    UNION
    FILTER otherProduct.name = "Coffee"
    RETURN 0 as customers, count(DISTINCT c) AS customersAlsoBuyingCoffee
    NEXT
    RETURN max(customers) AS customers, max(customersAlsoBuyingCoffee) AS customersAlsoBuyingCoffee
}
RETURN p.name AS product,
       round(toFloat(customersAlsoBuyingCoffee) * 100 / customers, 1) AS percentageOfCustomersAlsoBuyingCoffee
  ORDER BY product

NEXT 现在在 UNIONCALL 的上下文中正确支持聚合。有关更多信息,请参阅 顺序查询 (NEXT) > 已知问题与修复

功能 更新

PROFILE
WITH "Person" AS label
MATCH (people:$(label))
RETURN people.name

Cypher 现在可以在规划带有动态标签和关系类型的查询时利用令牌查找索引。这是通过引入三个新的查询计划运算符实现的:DynamicLabelNodeLookup, DynamicDirectedRelationshipTypeLookupDynamicUndirectedRelationshipTypeLookup

Cypher 25 新增功能

特性 详细信息

功能 新增

MATCH (()-->(n))+
WHERE allReduce(acc = 0, node IN n | acc + node.x, 6 < acc < 30)
RETURN [i IN n | i.x] AS sequence
ORDER BY head(n).x, size(n)

新的 allReduce() 函数。它支持对路径上累积的值进行逐步评估,允许提前剪枝不满足给定谓词的路径,并针对路径扩展进行了优化。

Neo4j 2025.07

Cypher 25 已更新

特性 详细信息

功能 更新

MATCH (n)-[r]->()
WHERE n:$(<expr1>)
WITH n, r:$(<expr2>) AS hasType
RETURN n:$(<expr3>)

增加了在允许使用标签表达式的地方动态引用节点标签和关系类型的功能。

Neo4j 2025.06

Cypher 25 已移除

特性 详细信息

功能 已移除

CREATE DATABASE db OPTIONS { seedCredentials: ... }

CREATE DATABASEOPTIONS 映射中移除了 seedCredentials 选项。有关更多信息,请参阅 操作手册 → 数据库管理 → 创建数据库

功能 已移除

CREATE DATABASE db OPTIONS { existingDataSeedInstance: ... }

CREATE DATABASEOPTIONS 映射中移除了 existingDataSeedInstance 选项,并由 existingDataSeedServer 取代。有关更多信息,请参阅 操作手册 → 数据库管理 → 创建数据库

功能 已移除

CREATE ALIAS composite.`1` FOR DATABASE neo4j
USE composite.`1`

已移除具有单独反引号名称部分的图引用。请使用参数或对整个名称进行反引号标注,例如 USE `composite.1`

功能 已移除

RETURN 1 as my\u0085identifier

Unicode 字符 \u0085 (下一行) 已从非转义标识符中移除,现在被视为一个空白字符。要继续使用它,请通过在其周围添加反引号 (``) 来转义该标识符。这适用于 Cypher 中所有非转义标识符,如标签表达式、属性、变量名或参数。在给出的示例中,带引号的标识符将是 my\u0085identifier

功能 已移除

RETURN 1 as my$Identifier

Unicode 表示为 \u0024 ($) 的字符已从非转义标识符中移除。要继续使用它,请通过在其周围添加反引号 (``) 来转义该标识符。这适用于 Cypher 中所有非转义标识符,如标签表达式、属性、变量名或参数。在给出的示例中,带引号的标识符将是 my\u0024identifier

以下 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

功能 已移除

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

SET 属性子句的右侧使用 NODERELATIONSHIP 代替 MAP 的做法已不再支持。请改用 properties() 函数从节点或关系获取属性映射,然后将其用于 SET 子句中。

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

功能 已移除

REVOKE READ {*} ON GRAPH * NODES A FROM missingUser
REVOKE ROLE missingRole FROM bob

对于用户、角色或数据库不存在的无效 REVOKE 命令,已用错误取代了通知。

功能 已移除

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

不再允许通过在同一 MERGE 子句内引用另一个实体的属性来指定一个实体(节点或关系)的属性。

功能 已移除

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

在创建索引或约束时,不再支持在 OPTIONS 映射中指定索引提供程序。

功能 已移除

db.create.setVectorProperty()
db.index.vector.createNodeIndex()
dbms.cluster.readReplicaToggle()
dbms.cluster.uncordonServer()
dbms.quarantineDatabase()
dbms.upgrade()
dbms.upgradeStatus()

这些过程已从 Cypher 25 中移除。有关更多信息,请参阅 操作手册 → 过程

在 Cypher 25 中已弃用

特性 详细信息

功能 已弃用

CREATE DATABASE db OPTIONS { existingData: ... }

existingData 选项已弃用。有关更多信息,请参阅 操作手册 → 数据库管理 → 创建数据库

Cypher 25 已更新

特性 详细信息

功能 更新

WITH 1 AS g
RETURN COLLECT {
        UNWIND [1,2,3] AS x
        WITH * WHERE x < 0
        WITH count(*) AS agg
        RETURN agg + g
} AS x

导入的变量现在在 COLLECT, COUNTEXISTS 子查询表达式中被正确地处理为常量。示例查询之前返回空结果 ([]),因为导入的变量被错误地用作隐式分组键。现在它返回 [1],因为变量未被用作分组键,从而允许 count(*) 返回 00 + g 求值为 1

功能 更新

RETURN $0hello

按照 GQL 标准,参数现在可以以扩展标识符字符(例如数字)开头。有关更多信息,请参阅 参数

功能 更新

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

参数现在可用于 SHORTESTANY 路径模式

功能 更新

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

过程 db.schema.nodeTypeProperties()db.schema.relTypeProperties() 返回的 propertyTypes 列之前返回的是表示给定属性潜在 Java 类型的字符串列表。现在它返回表示给定属性所拥有的可能 Cypher 类型的字符串列表。有关所有可用的 Cypher 类型,请参阅关于类型及其同义词的章节。

语法 更新

SHOW NODE PROPERTY UNIQUENESS CONSTRAINTS
SHOW RELATIONSHIP PROPERTY UNIQUENESS CONSTRAINTS
SHOW PROPERTY UNIQUENESS CONSTRAINTS

用于 SHOW CONSTRAINTS 的约束类型关键字过滤现在在过滤属性唯一性约束时允许使用可选关键字 PROPERTY。返回的约束类型列也已更新为返回 NODE_PROPERTY_UNIQUENESSRELATIONSHIP_PROPERTY_UNIQUENESS

功能 更新

SHOW TRANSACTIONS YIELD startTime, clientAddress, outerTransactionId, currentQuery, currentQueryId, parameters, planner, runtime, indexes, currentQueryStartTime, currentQueryElapsedTime, currentQueryCpuTime, currentQueryIdleTime, currentQueryStatus

多个 SHOW TRANSACTIONS 列已更新

  • startTimecurrentQueryStartTime 现在返回 ZONED DATETIME,而不是时间值的 STRING 表示。

  • clientAddressouterTransactionId 不可用时,它们现在返回 null 而不是空 STRING

  • 当前的查询相关列(currentQuery, currentQueryId, parameters, planner, runtime, indexes, currentQueryStartTime, currentQueryElapsedTime, currentQueryCpuTime, currentQueryIdleTimecurrentQueryStatus)现在在没有查询执行时返回 null

功能 更新

USE graph.byName('composite.with.dot.constituent')
USE graph.propertiesByName('composite.with.dot.constituent')

函数 graph.byNamegraph.propertiesByName 参数中的图引用现在不需要句法引号。

在 Cypher 5 中,如果复合数据库或组成部分名称包含点,则必须将这些名称部分包裹在引号中以正确解析名称,例如 USE graph.byName('`composite.with.dot`.constituent')

功能 更新

CREATE (:Person)
MATCH (p:Person)
RETURN count(p) AS count

查询不再需要 WITH 来在读取和写入操作之间进行过渡。有关更多信息,请参阅 子句组合 → 读写查询

功能 更新

RETURN replace("hello world", "l", "", 1)

replace() 函数现在接受一个可选的 limit 参数,用于定义搜索字符串被替换的次数。

Cypher 25 新增功能

特性 详细信息

功能 新增

CREATE [COMPOSITE] DATABASE actors SET DEFAULT LANGUAGE CYPHER 25

在创建标准或复合数据库时设置默认 Cypher 版本。可用版本为 CYPHER 25CYPHER 5。如果未指定,数据库的默认语言将设置为 DBMS 的默认语言。有关更多信息,请参阅操作手册中的以下章节:

功能 新增

CREATE ALIAS `remote-with-default-language`
FOR DATABASE `northwind-graph-2020`
    AT "neo4j+s://location:7687"
    USER alice
    PASSWORD 'example_secret'
    DEFAULT LANGUAGE CYPHER 25

在创建远程数据库别名时设置默认 Cypher 版本。可用版本为 CYPHER 5CYPHER 25。本地数据库别名和复合数据库中的数据库别名不能分配默认 Cypher 版本。本地数据库别名始终具有其目标数据库的 Cypher 版本,复合数据库中的数据库别名始终具有其所属复合数据库的 Cypher 版本。有关更多信息,请参阅 操作手册 → 为远程数据库别名设置默认 Cypher 版本

功能 新增

ALTER DATABASE movies SET DEFAULT LANGUAGE CYPHER 25

更改现有标准或复合数据库的默认 Cypher 版本。可用版本为 CYPHER 25CYPHER 5。有关更多信息,请参阅 操作手册 → 更改现有数据库的默认 Cypher 版本

功能 新增

ALTER ALIAS `remote-with-default-language` SET DATABASE DEFAULT LANGUAGE CYPHER 25

更改远程数据库别名的默认 Cypher 版本。可用版本为 CYPHER 25CYPHER 5。无法更改本地数据库别名或属于复合数据库的别名的默认 Cypher 版本。本地数据库别名始终具有其目标数据库的 Cypher 版本,属于复合数据库的别名始终具有复合数据库的 Cypher 版本。有关更多信息,请参阅 操作手册 → 更改远程数据库别名的默认 Cypher 版本

功能 新增

SHOW DATABASES YIELD name, defaultLanguage

SHOW DATABASE 命令的新返回列 defaultLanguage 返回数据库的默认语言。此列默认不返回;只能使用 YIELD 返回。有关更多信息,请参阅 操作手册 → 显示数据库的默认 Cypher 版本

功能 新增

SHOW ALIAS `remote-with-default-language` FOR DATABASE YIELD name, defaultLanguage

SHOW ALIAS 命令的新返回列 defaultLanguage 返回数据库别名的默认语言。此列默认不返回;只能使用 YIELD 返回。有关更多信息,请参阅 操作手册 → 列出数据库别名

功能 新增

CYPHER 25
MATCH (n:Person)
FILTER n.age < 35
RETURN n.name AS name

新查询选项:CYPHER 25。在查询前加上 CYPHER 25 可确保查询以 Cypher 25 运行,无论数据库的默认语言为何。(选择 CYPHER 5 的功能是在 Neo4j 5.21 中引入的)。

功能 新增

RETURN 1 AS a

NEXT

RETURN 1 AS b

用于查询线性组合的新 NEXT 关键字。有关更多信息,请参阅 顺序查询 (NEXT)

功能 新增

MATCH (s:Supplier)-[:SUPPLIES]->(p:Product)
LET supplier =  s.name
RETURN supplier, p.name AS product

用于将值绑定到变量的新 LET 子句。

功能 新增

UNWIND [1, 2, 3, 4, 5, 6] AS x
FILTER x > 2
RETURN x
LOAD CSV WITH HEADERS FROM 'file:///companies.csv' AS row
FILTER row.Id IS NOT NULL
MERGE (c:Company {id: row.Id})

用于过滤查询的新 FILTER 子句,类似于 WHERE

功能 新增

WHEN false THEN RETURN 1 AS x
WHEN true THEN RETURN 2 AS x
ELSE RETURN 3 AS x
 MATCH (n:Person)
 OPTIONAL MATCH (n)-[:KNOWS]->(m)
 CALL (*) {
   WHEN m IS NULL THEN {
      CREATE (f: Person {name: 'Peter', age: n.age}),
      (n)-[:KNOWS]->(f)
         RETURN f, n.name AS newConnection
   }
 }
RETURN f.name AS newNode,
       collect(newConnection) AS newConnections

引入了 WHEN/ELSE 分支,支持条件查询的组合,类似于其他编程语言中的 IF 语句。有关更多信息,请参阅 条件查询 (WHEN)

功能 新增

{
   MATCH (n:Actor)
   RETURN n.name AS name
   UNION
   MATCH (n:Director)
   RETURN n.name AS name
}
UNION ALL
MATCH (n:Movie)
RETURN n.title AS name

UNION [DISTINCT]UNION ALL 现在可以使用花括号在同一个查询中组合。有关更多信息,请参阅 组合 UNIONUNION ALL

功能 新增

CREATE DATABASE db OPTIONS { seedRestoreUntil: ... }

现在可以在 CREATE DATABASEOPTIONS 映射中指定 seedRestoreUntil 选项。这允许将数据库恢复(填充)到特定日期或事务 ID。有关更多信息,请参阅 操作手册 → 数据库管理 → 从 URI 创建数据库

功能 新增

CREATE DATABASE db OPTIONS { seedSourceDatabase: ... }

如果 seedURI 指向包含多个数据库备份的文件夹,则可以指定源数据库的名称。有关更多信息,请参阅 操作手册 → 数据库管理 → 创建数据库

功能 新增

RETURN cosh(0.5), coth(0.5), sinh(0.5), tanh(0.5)

引入了四个新的双曲三角 Cypher 函数。有关更多信息,请参阅 数学函数 - 三角函数

功能 新增

MATCH (n)
RETURN ALL n.prop AS prop

关键字 ALL 现在可以在 RETURN 后添加,作为不删除重复项的 RETURN 的显式形式。

功能 新增

MATCH (n)
WITH ALL n.prop AS prop
RETURN prop

关键字 ALL 现在可以在 WITH 后添加,作为不删除重复项的 WITH 的显式形式。

功能 新增

MATCH REPEATABLE ELEMENTS p = (:B)-->{,5}()
RETURN [n IN nodes(p) | n.q] AS nodes

新匹配模式,REPEATABLE ELEMENTS。这是一种非限制性匹配模式,其中在图模式中跨所有组成路径模式匹配的关系可以被重复遍历。

功能 新增

MATCH DIFFERENT RELATIONSHIPS p = (:B)-->{,5}()
RETURN [n IN nodes(p) | n.q] AS nodes

新关键字 DIFFERENT RELATIONSHIPS,它允许显式指定 Cypher 的默认模式。这是一种限制性匹配模式,要求在图模式中跨所有组成路径模式匹配的所有关系必须是唯一的。指定 DIFFERENT RELATIONSHIPS 在功能上等同于不指定匹配模式。

© . This site is unofficial and not affiliated with Neo4j, Inc.