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

本章列出了近期版本 APOC 中已移除、弃用、新增或扩展的所有特性。

APOC 2025.06 包含许多仅与 Cypher 25 兼容的更改,也是针对 Cypher 5 的最后更新。未来版本(APOC 2025.07+)中的任何 APOC 更改仅与 Cypher 25 兼容。在 Cypher 25 中移除的过程和函数仍可在 APOC 2025.06+ 中访问,方法是在查询前加上 CYPHER 5,或将 Cypher 5 设置为数据库的默认语言。有关更多信息,请参阅

版本 2026.03

此版本无文档更新。

版本 2026.02

此版本无文档更新。

版本 2026.01

此版本无文档更新。

版本 2025.12

此版本无文档更新。

版本 2025.11

在 Cypher 25 中已弃用

特性 详细信息

函数 已弃用

RETURN apoc.coll.flatten(list)

此函数已弃用,建议使用 Cypher 的 coll.flatten() 函数。

RETURN coll.flatten(list)

函数 已弃用

RETURN apoc.coll.indexOf(list, value)

此函数已弃用,建议使用 Cypher 的 coll.indexOf() 函数。

RETURN coll.indexOf(list, value)

函数 已弃用

RETURN apoc.coll.insert(list, index, value)

此函数已弃用,建议使用 Cypher 的 coll.insert() 函数。

RETURN coll.insert(list, index, value)

函数 已弃用

RETURN apoc.coll.max(list)

此函数已弃用,建议使用 Cypher 的 coll.max() 函数。

RETURN coll.max(list)

函数 已弃用

RETURN apoc.coll.min(list)

此函数已弃用,建议使用 Cypher 的 coll.min() 函数。

RETURN coll.min(list)

函数 已弃用

RETURN apoc.coll.remove(list, index, length)

此函数已弃用,建议使用 Cypher 的 coll.remove() 函数。

RETURN coll.remove(list, index)

函数 已弃用

RETURN apoc.coll.sort(list)

此函数已弃用,建议使用 Cypher 的 coll.sort() 函数。

RETURN coll.sort(list)

函数 已弃用

RETURN apoc.coll.toSet(list)

此函数已弃用,建议使用 Cypher 的 coll.distinct() 函数。

RETURN coll.distinct(list)

函数 已弃用

RETURN apoc.convert.toSet(list)

此函数已弃用,建议使用 Cypher 的 coll.distinct() 函数。

RETURN coll.distinct(list)

版本 2025.10

在 Cypher 25 中已弃用

特性 详细信息

过程 已弃用

apoc.date.convertFormat(temporal, currentFormat [, convertTo ])
apoc.date.fields(date [, pattern ])
apoc.date.parse(time [, unit, format, timezone ])
apoc.temporal.toZonedTemporal(time [, format, timezone ])

apoc.date.convertFormat() 已弃用,建议结合使用 Cypher 的 format() 函数和相应的临时类型构造函数(如 date())。apoc.date.fields()apoc.date.parse()apoc.temporal.toZonedTemporal() 已弃用,建议使用 Cypher 相应的临时类型构造函数(如 date()datetime())。

版本 2025.09

在 Cypher 25 中已弃用

特性 详细信息

过程 已弃用

apoc.date.format(time [, unit, format, timezone ])
apoc.temporal.format(temporal [, format ])
apoc.temporal.formatDuration(input, format)

apoc.date.format()apoc.temporal.format()apoc.temporal.formatDuration() 已弃用,建议使用 Cypher 的 format() 函数。

版本 2025.08

在 Cypher 25 中已更新

特性 详细信息

过程 已更新

apoc.periodic.repeat

apoc.periodic.repeat 过程增加了一个新的 config 参数 cancelOnError。有关详细信息,请参阅 apoc.periodic.repeat

版本 2025.07

在 Cypher 25 中已弃用

特性 详细信息

函数 已弃用

RETURN apoc.agg.graph(path)

此函数已弃用,建议使用 Cypher 的 COLLECT {} 表达式。

RETURN {
  nodes: COLLECT {
    UNWIND nodes(path) AS n
    RETURN DISTINCT n
  },
  relationships: COLLECT {
    UNWIND relationships(path) AS r
    RETURN DISTINCT r
  }
}

函数 已弃用

RETURN apoc.agg.product(value)

此函数已弃用,建议使用 Cypher 的 reduce() 函数。

RETURN reduce(x = 1, i IN values | x * i)

过程 已弃用

CALL apoc.algo.cover(nodes)

此过程已弃用,建议使用 Cypher 的 MATCHIN。有关详细信息,请参阅 apoc.algo.cover 中的示例。

UNWIND node AS nodes
MATCH (node)-[rel]->(otherNode)
WHERE otherNode IN nodes
RETURN rel

过程 已弃用

RETURN apoc.coll.contains(coll, value)

此函数已弃用,建议使用以下 Cypher 解决方案

RETURN value IN coll

过程 已弃用

RETURN apoc.coll.containsAll(coll1, coll2)

此函数已弃用,建议使用以下 Cypher 解决方案

RETURN all(x IN coll2 WHERE x IN coll1)

函数 已弃用

RETURN apoc.coll.fill(item, count)

此函数已弃用,建议使用 Cypher 的 列表推导式 (list comprehension)

RETURN [i IN range(1, count) | item] as output

函数 已弃用

RETURN apoc.coll.max(values)

此函数已弃用,建议使用 Cypher 的 max() 函数。

UNWIND values AS values
RETURN max(value)

函数 已弃用

RETURN apoc.coll.min(values)

此函数已弃用,建议使用 Cypher 的 min() 函数。

UNWIND values AS values
RETURN min(value)

函数 已弃用

RETURN apoc.coll.occurrences(coll, item)

使用 Cypher 的 reduce() 函数配合 CASE 表达式

RETURN reduce(count = 0, x IN coll | count + CASE WHEN x = item THEN 1 ELSE 0 END)

函数 已弃用

RETURN apoc.coll.pairs(list)

此函数已弃用,建议使用 Cypher 的 列表推导式 (list comprehension)

RETURN [i IN range(0, size(list) - 1) | [list[i], list[i + 1]]] AS value

函数 已弃用

RETURN apoc.coll.pairsMin(list)

此函数已弃用,建议使用 Cypher 的 列表推导式 (list comprehension)

RETURN [i IN range(0, size(list) - 2) | [list[i], list[i + 1]]] AS value

过程 函数 已弃用

CALL apoc.coll.pairWithOffset(coll, offset)
RETURN apoc.coll.pairWithOffset(coll, offset)

此函数和过程已弃用,建议使用以下 Cypher 解决方案

RETURN [i IN range(0, size(list) - 1) | [list[i], list[i + offset]]] AS value

过程 函数 已弃用

CALL apoc.coll.partition(coll, batchSize)
RETURN apoc.coll.partition(coll, batchSize)

此函数和过程已弃用,建议使用以下 Cypher 解决方案

RETURN [i IN range(0, size(list), offset) | list[i..i + offset]] AS value

函数 已弃用

RETURN apoc.coll.randomItem(coll)

此函数已弃用,建议使用 Cypher 的 rand() 函数。

RETURN list[toInteger(rand() * size(list))]

函数 已弃用

RETURN apoc.coll.sortNodes(coll, prop)

使用 Cypher 的 COLLECT {} 表达式和 ORDER BY 子句

RETURN COLLECT {
  MATCH (n)
  RETURN n
  ORDER BY n.prop DESC
}

函数 已弃用

RETURN apoc.coll.stdev(list, isBiasCorrected)

使用 Cypher 的 stDev()stDevP() 函数。

UNWIND [1,2,3,4,5] AS x
RETURN stDev(x), stDevP(x)

函数 已弃用

RETURN apoc.coll.sum(coll)

此函数已弃用,建议使用 Cypher 的 reduce() 函数。

RETURN reduce(sum = 0.0, x IN coll | sum + x)

函数 已弃用

RETURN apoc.coll.sumLongs(coll)

此函数已弃用,建议使用 Cypher 的 reduce() 函数。

RETURN reduce(sum = 0.0, x IN coll | sum + x)

函数 已弃用

RETURN apoc.coll.unionAll(list1, list2)

apoc.coll.unionAll() 在功能上等同于 Cypher 的 列表拼接

RETURN list1 + list2

函数 已弃用

RETURN apoc.coll.zip(list1, list2)

此函数已弃用,建议使用 Cypher 的 UNWINDrange() 函数。有关详细信息,请参阅 Cypher 手册 → UNWINDCypher 手册 → range()

RETURN COLLECT {
    UNWIND range(0, size(list1)-1) AS i
    RETURN [list1[i], list2[i]]
} AS result

过程 已弃用

CALL apoc.coll.zipToRows(list1, list2)

此过程已弃用,建议使用 Cypher 的 UNWINDrange() 函数。有关详细信息,请参阅 Cypher 手册 → UNWINDCypher 手册 → range()

UNWIND range(0, size(list1) - 1) AS i
RETURN [list1[i], list2[i]]

函数 已弃用

RETURN apoc.convert.toList(value)

此函数已弃用,建议使用 Cypher 的 列表函数。要将 PATH 值转换为列表,请参阅以下使用 Cypher reduce() 函数的示例。

MATCH path = ()-[:ACTED_IN]->()
WITH nodes(path) AS nodes, relationships(path) AS rels
RETURN reduce(acc=[nodes[0]], i IN range(0,size(rels)-1) | acc + rels[i] + nodes[i+1])[0] AS output

过程 已弃用

CALL apoc.create.addLabels(nodes, labels)

此过程已弃用,建议使用 Cypher 的动态标签 SET。有关详细信息,请参阅 Cypher 手册 → 动态设置标签

SET n:$(labels)

过程 已弃用

CALL apoc.create.node(labels, $props)

此过程已弃用,建议使用 Cypher 的动态标签。有关详细信息,请参阅 Cypher 手册 → 使用动态节点标签和关系类型创建节点和关系

CREATE (n:$(labels) $props)

过程 已弃用

CALL apoc.create.nodes(labels, $props)

此过程已弃用,建议使用 Cypher 的动态标签。有关详细信息,请参阅 Cypher 手册 → 使用动态节点标签和关系类型创建节点和关系

UNWIND $props AS propertyMap
CREATE (node:$($labels))
SET n = propertyMap

过程 已弃用

CALL apoc.create.relationship(from, relType, props, to)

此过程已弃用,建议使用 Cypher 的动态类型。有关详细信息,请参阅 Cypher 手册 → 使用动态节点标签和关系类型创建节点和关系

CREATE (from)-[n:$(relType)]->(to)
SET n = props

过程 已弃用

CALL apoc.create.removeLabels(nodes, labels)

此过程已弃用,建议使用 Cypher 的动态标签。有关详细信息,请参阅 Cypher 手册 → 动态移除节点标签

REMOVE node:$(nodes)

过程 已弃用

CALL apoc.create.removeProperties(nodes, keys)

此过程已弃用,建议使用 Cypher 的动态属性。有关详细信息,请参阅 Cypher 手册 → 动态移除属性

REMOVE node[key]

过程 已弃用

CALL apoc.create.removeRelProperties(rels, keys)

此过程已弃用,建议使用 Cypher 的动态属性。有关详细信息,请参阅 Cypher 手册 → 动态移除属性

REMOVE rel[key]

过程 已弃用

CALL apoc.create.setLabels(nodes, labels)

此过程已弃用,建议使用 Cypher 的动态标签。有关详细信息,请参阅 Cypher 手册 → 动态设置标签

REMOVE node:$(labels(node))
SET node:$(labels)

过程 已弃用

CALL apoc.create.setProperties(nodes, keys, values)

此过程已弃用,建议使用 Cypher 的动态属性。有关详细信息,请参阅 Cypher 手册 → 动态设置或更新属性

SET node[key] = value

过程 已弃用

CALL apoc.create.setProperty(nodes, key, value)

此过程已弃用,建议使用 Cypher 的动态属性。有关详细信息,请参阅 Cypher 手册 → 动态设置或更新属性

SET node[key] = value

过程 已弃用

CALL apoc.create.setRelProperties(rels, keys, values)

此过程已弃用,建议使用 Cypher 的动态属性。有关详细信息,请参阅 Cypher 手册 → 动态设置或更新属性

SET rel[key] = value

过程 已弃用

CALL apoc.create.setRelProperty(rels, key, value)

此过程已弃用,建议使用 Cypher 的动态属性。有关详细信息,请参阅 Cypher 手册 → 动态设置或更新属性

SET rel[key] = value

函数 已弃用

RETURN apoc.date.currentTimestamp()

此函数已弃用,建议使用 Cypher 的 时间函数 - 瞬时类型

RETURN datetime.realtime().epochMillis

函数 已弃用

RETURN apoc.date.field(time, unit, timezone)

此函数已弃用,建议使用 Cypher 的 instance.field 组件访问。例如,要访问 DATETIME 值的 year

RETURN datetime().year

函数 已弃用

RETURN apoc.date.fromISO8601(time)

Cypher 的 datetime() 函数现在已支持 ISO8601 标准格式的 STRING 值。

RETURN datetime('2020-11-04T12:21:33.000Z').epochMillis

函数 已弃用

RETURN apoc.date.toISO8601(time, unit)

Cypher 的 toString() 函数自动将时间值转换为 ISO8601 标准格式的 STRING 值。

RETURN toString(datetime())

函数 已弃用

RETURN apoc.meta.cypher.isType(value, type)

此函数已弃用,建议使用 Cypher 的 类型谓词表达式

RETURN value IS :: <TYPE>

函数 已弃用

RETURN apoc.meta.cypher.type(value)

此函数已弃用,建议使用 Cypher 的 值类型函数

RETURN valueType(value)

函数 已弃用

RETURN apoc.node.degree(node, relTypes )
RETURN apoc.node.degree.in(node, relTypes )
RETURN apoc.node.degree.out(node, relTypes )

使用 COUNT {} 表达式时,Cypher 将在简单模式上执行度数查找

RETURN COUNT { (p)--() }
RETURN COUNT { (p)<--() }
RETURN COUNT { (p)-->() }

函数 已弃用

RETURN apoc.node.relationship.exists(node, relTypes )

使用 Cypher 的 EXISTS {} 表达式

RETURN EXISTS { (p)--() }

过程 已弃用

CALL apoc.nodes.delete(nodes, batchSize)

此过程已弃用,建议使用 Cypher 的 CALL {…​} IN TRANSACTIONS。有关详细信息,请参阅 Cypher 手册 → 事务中的 CALL 子查询

CALL (n) {
    DETACH DELETE n
} IN TRANSACTIONS OF 100 ROWS

函数 已弃用

RETURN apoc.refactor.categorize(sourceKey, type, outgoing, label, targetKey, copiedKeys, batchSize)

有关详细信息,请参阅 apoc.refactor.categorize。下方展示了一个重构示例:

MATCH (n) WHERE n.genre IS NOT NULL
CALL (n) {
  MERGE (g:Genre {name: n.genre})
  CREATE (n)-[:GENRE]->(:g)
  REMOVE n.genre
} IN TRANSACTIONS OF 100 ROWS

过程 已弃用

CALL apoc.refactor.rename.label(oldLabel, newLabel, nodes )

此过程已弃用,建议使用 Cypher 的动态标签。有关详细信息,请参阅 Cypher 手册 → 动态设置标签Cypher 手册 → 动态移除标签

REMOVE node:$(oldLabel)
SET node:$(newLabel)

过程 已弃用

CALL apoc.refactor.rename.nodeProperty(oldName, newName, nodes, config)

此过程已弃用,建议使用 Cypher 的动态属性。有关详细信息,请参阅 Cypher 手册 → 动态设置或更新属性Cypher 手册 → 动态移除属性

SET node[newKey] = node[oldKey]
REMOVE node[oldKey]

过程 已弃用

CALL apoc.refactor.rename.type(oldType, newType, rels, config)

此过程已弃用,建议使用 Cypher 的动态类型和 DELETE 子句。有关详细信息,请参阅 Cypher 手册 → 使用动态标签和类型创建Cypher 手册 → 仅删除关系

CREATE (from)-[:$(newType)]->(to)
SET newRel = properties(oldRel)
DELETE oldRel

过程 已弃用

CALL apoc.refactor.rename.typeProperty(oldName, newName, rels, config )

此过程已弃用,建议使用 Cypher 的动态属性。有关详细信息,请参阅 Cypher 手册 → 动态设置或更新属性Cypher 手册 → 动态移除属性

SET rel[newKey] = rel[oldKey]
REMOVE rel[oldKey]

过程 已弃用

CALL apoc.refactor.setType(rel, newType)

此过程已弃用,建议使用 Cypher 的动态类型和 DELETE 子句。有关详细信息,请参阅 Cypher 手册 → 使用动态标签和类型创建Cypher 手册 → 仅删除关系

CREATE (from)-[newRel:$(newType)]->(to)
SET newRel = properties(oldRel)
DELETE oldRel

过程 已弃用

apoc.case(conditionals [, elseQuery, params ])
apoc.do.case(conditionals [, elseQuery, params ])
apoc.do.when(condition, ifQuery, elseQuery [, params ])
apoc.when(condition, ifQuery [, elseQuery, params ])

被 Cypher 的 条件查询 取代

WHEN predicate THEN [{]
  <conditionalQuery>
  [}]
[WHEN ...]*
[ELSE [{]
  <conditionalQuery>
[}]]

版本 2025.06

在 Cypher 25 中已移除

特性 详细信息

过程 已移除

apoc.export.arrow.all(file [, config ])
apoc.export.arrow.graph(file, graph [, config ])
apoc.export.arrow.query(file, query [, config ])
apoc.export.arrow.stream.all([ config ])
apoc.export.arrow.stream.graph(graph [, config ])
apoc.export.arrow.stream.query(query [, config ])
apoc.load.arrow(file [, config ])
apoc.load.arrow.stream(source [, config ])
apoc.load.jsonParams(urlOrKeyOrBinary, headers, payload [, path, config ])
apoc.log.stream(path [, config ])

这些过程已迁移至 APOC Extended 库。这意味着 Neo4j 不再提供官方支持。

过程 已移除

apoc.trigger.add(name, statement, selector [, config ])
apoc.trigger.remove(name)
apoc.trigger.removeAll()
apoc.trigger.pause(name)
apoc.trigger.resume(name)

这些过程已移除,建议使用新的 apoc.trigger 过程

过程 已移除

apoc.warmup.run([ loadProperties, loadDynamicProperties, loadIndexes ])

此过程已被移除,因为它重复了页面缓存预热 (page cache warm-up) 的功能,这已是 DBMS 的一部分。此外,该过程的 API 专属于记录存储引擎 (Record storage engine),该引擎不再是 Neo4j 的默认存储引擎。

过程 已移除

apoc.convert.toTree(paths [, lowerCaseRels, config ])

此过程已被 apoc.paths.toJsonTree 取代。

函数 已移除

apoc.create.uuid()
apoc.create.uuids(count)

这些函数已被 Cypher 的 randomUUID() 函数取代。

函数 已移除

apoc.map.setEntry

此函数已被 apoc.map.setKey 取代。

函数 已移除

apoc.text.regreplace

此函数已被 apoc.text.replace 取代。

函数 已移除

apoc.text.levenshteinDistance

此函数已被 apoc.text.distance 取代。

在 Cypher 25 中已弃用

特性 详细信息

函数 已弃用

RETURN apoc.math.coth(x)

被 Cypher 的 coth() 函数取代

RETURN coth()

函数 已弃用

RETURN apoc.math.cosh(x)

被 Cypher 的 cosh() 函数取代

RETURN cosh()

函数 已弃用

RETURN apoc.math.sinh(x)

被 Cypher 的 sinh() 函数取代

RETURN sinh()

函数 已弃用

RETURN apoc.math.tanh(x)

被 Cypher 的 tanh() 函数取代

RETURN tanh()

在 Cypher 5 和 25 中已更新

特性 详细信息

过程 已更新

apoc.export.json.all()
apoc.export.json.data()
apoc.export.json.graph()
apoc.export.json.query()

apoc.export.json.* 过程增加了一个新的 config 参数 writeRelationshipProperties。有关详细信息,请参阅 apoc.export.json.all → 配置参数

版本 2025.01

已更新的过程和函数

特性 详细信息

过程 已更新

apoc.cypher.runTimeboxed(statement, params, timeout, config)

apoc.cypher.runTimeboxed 增加了一个新的 config 参数。有关详细信息,请参阅 apoc.cypher.runTimeboxed → 配置参数

过程 已更新

apoc.refactor.from(rel, endNode, config),
apoc.refactor.invert(rel, config),
apoc.refactor.to(rel, endNode, config)

apoc.refactor.fromapoc.refactor.invertapoc.refactor.to 增加了一个新的 config 参数,允许设置在出现错误时是失败还是忽略。

过程 已更新

apoc.create.virtual.fromNode(node, propertyNames, config)

apoc.create.virtual.fromNode 增加了一个新的 config 参数。有关详细信息,请参阅 apoc.create.virtual.fromNode → 包装节点

版本 5.26

已弃用的过程和函数

特性 详细信息

过程 已弃用

apoc.export.arrow.all(file [, config ])
apoc.export.arrow.graph(file, graph [, config ])
apoc.export.arrow.query(file, query [, config ])
apoc.export.arrow.stream.all([ config ])
apoc.export.arrow.stream.graph(graph [, config ])
apoc.export.arrow.stream.query(query [, config ])
apoc.load.arrow(file [, config ])
apoc.load.arrow.stream(source [, config ])
apoc.load.jsonParams(urlOrKeyOrBinary, headers, payload [, path, config ])
apoc.log.stream(path [, config ])

所有这些过程将在未来的主要版本中迁移到 APOC Extended 库

函数 已弃用

apoc.map.setEntry

此函数是 apoc.map.setKey 的副本,将在未来的主要版本中移除。

函数 已弃用

apoc.text.regreplace

此函数是 apoc.text.replace 的副本,将在未来的主要版本中移除。

函数 已弃用

apoc.text.levenshteinDistance

此函数是 apoc.text.distance 的副本,将在未来的主要版本中移除。

已更新的过程和函数

特性 详细信息

函数 已更新

apoc.coll.collections([null], null)

apoc.coll.contains 现在使用 Cypher 的值匹配器。这意味着在匹配 null 值时,它将始终返回 false。若要检查集合是否包含 null 值,建议使用 Cypher 的 any() 函数。

版本 5.24

新过程和函数

特性 详细信息

函数 新增

RETURN apoc.text.regexGroupsByName(text, regex)

返回给定文本中匹配正则表达式的所有分组及其组名。

版本 5.20

已弃用的过程和函数

特性 详细信息

过程 已弃用

CALL apoc.convert.toTree(paths LIST<PATH>, lowerCaseRels BOOLEAN, config MAP<STRING, ANY>)

请改用以下替代方案

CALL apoc.paths.toJsonTree(paths LIST<PATH>, lowerCaseRels BOOLEAN, config MAP<STRING, ANY>)

新过程和函数

特性 详细信息

过程 新增

CALL apoc.paths.toJsonTree(paths LIST<PATH>, lowerCaseRels BOOLEAN, config MAP<STRING, ANY>)

修复了已弃用的 apoc.convert.toTree 中的若干问题。

版本 5.4

已弃用的过程和函数

特性 详细信息

过程 已弃用

CALL apoc.trigger.add(name STRING, statement STRING, selector MAP<STRING, ANY>, config MAP<STRING, ANY>)

请改用以下替代方案

CALL apoc.trigger.install(databaseName STRING, name STRING, statement STRING, selector MAP<STRING, ANY>, config MAP<STRING, ANY>)

过程 已弃用

CALL apoc.trigger.remove(name STRING)

请改用以下替代方案

CALL apoc.trigger.drop(databaseName STRING, name STRING)

过程 已弃用

CALL apoc.trigger.removeAll()

请改用以下替代方案

CALL apoc.trigger.dropAll(databaseName STRING)

过程 已弃用

CALL apoc.trigger.pause(name STRING)

请改用以下替代方案

CALL apoc.trigger.stop(databaseName STRING, name STRING)

过程 已弃用

CALL apoc.trigger.resume(name STRING)

请改用以下替代方案

CALL apoc.trigger.start(databaseName STRING, name STRING)

已更新的过程和函数

特性 详细信息

过程 已更新

apoc.path.expandConfig(startNode ANY, config MAP<STRING, ANY>)
apoc.path.spanningTree(startNode ANY, config MAP<STRING, ANY>)
apoc.path.subgraphAll(startNode ANY, config MAP<STRING, ANY>)
apoc.path.subgraphNodes(startNode ANY, config MAP<STRING, ANY>)

已弃用的配置字段

Config {
  whitelistNodes: LIST<NODE>,
  blacklistNodes: LIST<NODE>
}

请改用以下替代方案

Config {
  allowlistNodes: LIST<NODE>,
  denylistNodes: LIST<NODE>
}

新过程和函数

特性 详细信息

过程 新增

CALL apoc.trigger.drop(databaseName STRING, name STRING)

最终移除指定的触发器。

过程 新增

CALL apoc.trigger.dropAll(databaseName STRING)

最终移除指定数据库的所有触发器。

过程 新增

CALL apoc.trigger.install(databaseName STRING, name STRING, statement STRING, selector MAP<STRING, ANY>, config MAP<STRING, ANY>)

最终移除给定数据库的触发器,该触发器在事务成功时调用。

过程 新增

CALL apoc.trigger.show(databaseName STRING)

列出给定数据库安装的所有最终触发器。

过程 新增

CALL apoc.trigger.stop(databaseName STRING, name STRING)

最终停止指定的触发器。

过程 新增

CALL apoc.trigger.start(databaseName STRING, name STRING)

最终重启暂停的触发器。

版本 5.1

已移除的过程和函数

特性 详细信息

函数 已移除

apoc.convert.toBoolean(value)

请改用以下替代方案

toBoolean(value)

toBooleanOrNull(value)

函数 已移除

apoc.convert.toBooleanList(value)

请改用以下替代方案

toBooleanList(value)

函数 已移除

apoc.convert.toFloat(value)

请改用以下替代方案

toFloat(value)

toFloatOrNull(value)

函数 已移除

apoc.convert.toIntList(value)

请改用以下替代方案

toIntegerList(value)

函数 已移除

apoc.convert.toInteger(value)

请改用以下替代方案

toInteger(value)

toIntegerOrNull(value)

函数 已移除

apoc.convert.toString(value)

请改用以下替代方案

toString(value)

toStringOrNull(value)

函数 已移除

apoc.convert.toStringList(value)

请改用以下替代方案

toStringList(value)

版本 5.0

配置更新

特性 详细信息

配置 已更新

neo4j.conf 不再支持 APOC 配置设置。

所有 apoc.* 设置现在应通过环境变量设置或添加到 apoc.conf 中。

有关更多信息,请参阅 此处

已弃用的过程和函数

特性 详细信息

函数 已弃用

RETURN apoc.create.uuid()

被 Neo4j 函数 randomUUID() 取代

RETURN randomUUID()

过程 已弃用

CALL apoc.create.uuids($count)

被 Neo4j 函数 randomUUID() 取代

UNWIND range(0,$count) AS row RETURN row, randomUUID() AS uuid

过程 已弃用

apoc.warmup.run(loadProperties=false,loadDynamicProperties=false,loadIndexes=false)

此过程重复了页面缓存预热功能,该功能是 DBMS 的一部分。

已移除的过程和函数

特性 详细信息

过程 已移除

apoc.algo.dijkstraWithDefaultWeight(startNode, endNode, 'KNOWS', 'distance', 10) YIELD path, weight

请改用以下替代方案

apoc.algo.dijkstra(startNode, endNode, 'KNOWS', 'distance', defaultValue, numberOfWantedResults) YIELD path, weight

函数 已移除

apoc.date.parseAsZonedDateTime('2012-12-23 23:59:59','yyyy-MM-dd HH:mm:ss', 'UTC-hour-offset')

替换为

apoc.temporal.toZonedTemporal('2012-12-23 23:59:59','yyyy-MM-dd HH:mm:ss', 'UTC-hour-offset')

函数 已移除

apoc.coll.reverse(coll)

在 Cypher 中被取代为

WITH [4923,'abc',521, null, 487] AS ids
RETURN reverse(ids)

过程 已移除

apoc.export.cypherAll(file,config)

替换为

apoc.export.cypher.all(file,config)

过程 已移除

apoc.export.cypherData(nodes,rels,file,config)

替换为

apoc.export.cypher.data(nodes,rels,file,config)

过程 已移除

apoc.export.cypherGraph(graph,file,config)

替换为

apoc.export.cypher.graph(graph,file,config)

过程 已移除

apoc.export.cypherQuery(query,file,config)

替换为

apoc.export.cypher.query(query,file,config)

函数 已移除

apoc.meta.type(value)

替换为

apoc.meta.cypher.type(value)

函数 已移除

apoc.meta.types(node-relationship-map)

替换为

apoc.meta.cypher.types(node-relationship-map)

函数 已移除

apoc.meta.isType(value,type)

替换为

apoc.meta.cypher.isType(value,type)

函数 已移除

apoc.meta.typeName(value)

替换为

apoc.meta.cypher.type(value)

过程 已移除

apoc.periodic.rock_n_roll_while('some cypher for knowing when to stop', 'some cypher for iteration', 'some cypher as action on each iteration', 10000) YIELD batches, total

在 Cypher 中部分被取代为

CALL {} IN TRANSACTIONS OF n ROWS

过程 已移除

apoc.periodic.rock_n_roll('some cypher for iteration', 'some cypher as action on each iteration', 10000) YIELD batches, total

在 Cypher 中被取代为

CALL {} IN TRANSACTIONS OF n ROWS

过程 已移除

apoc.create.vPattern({_labels:['LabelA'],key:value},'KNOWS',{key:value,...}, {_labels:['LabelB'],key:value}) returns a virtual pattern

替换为

apoc.create.virtualPath(['LabelA'],{key:value},'KNOWS',{key:value,...},['LabelB'],{key:value})

过程 已移除

apoc.create.vPatternFull(['LabelA'],{key:value},'KNOWS',{key:value,...},['LabelB'],{key:value}) returns a virtual pattern

替换为

apoc.create.virtualPath(['LabelA'],{key:value},'KNOWS',{key:value,...},['LabelB'],{key:value})

过程 已移除

apoc.xml.import(url, config)

替换为

apoc.import.xml(file,config)

过程 已移除

apoc.refactor.cloneNodesWithRelationships([node1,node2,...])

请改用以下方案,并设置 withRelationships = true

apoc.refactor.cloneNodes(nodes, withRelationships, skipProperties)

过程 已移除

CALL apoc.text.phonetic(value) yield value

被函数取代

RETURN apoc.text.phonetic(text) yield value

过程 已移除

CALL apoc.text.doubleMetaphone(value) yield value

被函数取代

RETURN apoc.text.doubleMetaphone(text) yield value

函数 已移除

apoc.math.round(value,[prec],mode=[CEILING,FLOOR,UP,DOWN,HALF_EVEN,HALF_DOWN,HALF_UP,DOWN,UNNECESSARY])

被 Neo4j round() 函数取代

RETURN round(3.141592, 3)

函数 已移除

apoc.cypher.runFirstColumn(statement, params, expectMultipleValues)

替换为

apoc.cypher.runFirstColumnMany(statement, params)
apoc.cypher.runFirstColumnSingle(statement, params)

已移除的配置设置

设置 详细信息

设置 已移除 apoc.initializer.cypher - 数据库启动后执行一次的 cypher 语句

此设置已被数据库特定的初始化器取代。请改用 apoc.initializer.<数据库名称>。