简介

APOC 库已拆分为两个独立的仓库:APOC Core 和 APOC Extended。APOC Core 由 Neo4j 官方支持。APOC Extended 不受 Neo4j 支持,由社区成员维护。

本文档处理官方支持的 APOC Core 库

有关 APOC Extended 库的更多信息,请访问 APOC Extended 页面

Neo4j 支持 APOC (Awesome Procedures on Cypher) 核心库。APOC 核心库提供对用户定义的过程和函数的访问,这些过程和函数将 Cypher 查询语言的使用扩展到数据集成、图算法和数据转换等领域。

这些过程和函数是用 Java 实现的,可以部署到 Neo4j 实例中,然后直接从 Cypher 调用。

APOC Core 库中所有可用函数和过程的完整列表可在过程和函数页面找到。

有关 Neo4j 用户创新高级总监 Michael Hunger 介绍 APOC 库历史和开发的简短视频,请观看此视频。

APOC 可用性

APOC 在 Neo4j AuraDB 中可用。有关 Aura 支持的 APOC 过程和函数的完整列表,请访问 APOC 的 Aura 页面。APOC 也可在 Neo4j SandboxDockerNeo4j Desktop 中使用。最后,APOC 库可以通过安装 APOC jar 在自托管数据库中提供。

示例

用户定义的函数可以像内置函数一样在任何表达式或谓词中使用。

过程可以使用 CALL procedure.name(); 独立调用

过程也可以集成到 Cypher 语句中。

下面的示例演示了如何将过程 apoc.load.json 集成到 Cypher 语句中

加载 JSON 示例
WITH 'https://raw.githubusercontent.com/neo4j/apoc/5.0/src/test/resources/person.json' AS url

CALL apoc.load.json(url) YIELD value as person

MERGE (p:Person {name: person.name})
   ON CREATE SET p.age = person.age, p.children = size(person.children)

有关使用特定 APOC 过程和函数的更多示例,请参阅 过程和函数 页面。

关于 Neo4j 内存跟踪器的说明

在使用 APOC 库之前,需要注意 APOC 过程不会被 Neo4j 内存跟踪器检测到。因此,如果它们超过数据库中的可用内存,它们将不会终止。

例如,过程 apoc.path.expand 在达到 db.memory.transaction.maxdb.memory.transaction.total.max 时不会停止。

此外,无法使用 SHOW TRANSACTIONS YIELD currentQuery, estimatedUsedHeapMemory 命令来监控查询的内存使用情况。

因此,为了避免 Java 堆空间错误,应谨慎使用 APOC 过程。