简介
|
APOC 库已被拆分为两个独立的存储库:APOC Core 和 APOC Extended。APOC Core 由 Neo4j 官方支持。APOC Extended 不受 Neo4j 官方支持,由社区成员进行维护。 本文档涵盖了官方支持的 APOC 核心库 (APOC Core Library)。 有关 APOC Extended 库的更多信息,请访问 APOC Extended 页面。 |
Neo4j 支持 APOC (Awesome Procedures on Cypher) 核心库。APOC 核心库提供了对用户定义过程和函数的访问,这些过程和函数将 Cypher 查询语言 的使用扩展到了数据集成、图算法和数据转换等领域。
这些过程和函数是用 Java 实现的,可以部署到 Neo4j 实例中,然后直接通过 Cypher 调用。
APOC 核心库中所有可用函数和过程的完整列表可以在 过程与函数 (Procedures & Functions) 页面找到。
有关由 Neo4j 用户创新高级总监 Michael Hunger 介绍的 APOC 库的历史和发展的简短介绍,请观看此短视频。
APOC 可用性
APOC 可在 Neo4j AuraDB 中使用。有关 Aura 支持的 APOC 过程和函数的完整列表,请访问 Aura 的 APOC 页面。APOC 也可在 Neo4j Sandbox、Docker 和 Neo4j Desktop 中使用。最后,通过安装 APOC jar 包,APOC 库也可用于自托管数据库。
示例
用户定义的函数可以像内置函数一样,用于任何表达式或谓词中。
过程可以使用 CALL procedure.name(); 进行独立调用。
过程也可以集成到 Cypher 语句中。
下面的示例演示了如何将 apoc.load.json 过程集成到 Cypher 语句中。
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 过程和函数的更多示例,请参阅 过程与函数 (Procedures & Functions) 页面。
关于 Neo4j 内存跟踪器的说明
在使用 APOC 库之前,请务必注意:Neo4j 内存跟踪器无法检测到 APOC 过程。因此,如果它们超过了数据库中的可用内存,它们将不会自动终止。
例如,如果达到了 db.memory.transaction.max 或 db.memory.transaction.total.max 的限制,apoc.path.expand 过程将不会停止。
此外,无法使用 SHOW TRANSACTIONS YIELD currentQuery, estimatedUsedHeapMemory 命令来监控查询的内存使用情况。
为了避免 Java 堆空间 (Java Heap Space) 错误,使用 APOC 过程时应格外谨慎。