1 APOC简介
APOC即Awesome Procedures on Cypher ,是 Neo4j 最大和最广泛使用的扩展库,是Neo4j过程和函数的标准实用程序库。它包括 450 多个标准程序,提供实用程序、转换、图形更新等功能。它们得到很好的支持,并且很容易作为单独的函数运行或包含在 Cypher 查询中。
2 注意事项
由于 APOC 依赖于 Neo4j 的内部 API,因此您需要为 Neo4j 安装使用匹配的 APOC 版本。确保前两个版本号在 Neo4j 和 APOC 之间匹配。以下是APOC和Neo4j版本匹配表
apoc version | neo4j version |
---|---|
4.4.0.1 | 4.4.0 (4.3.x) |
4.3.0.4 | 4.3.7 (4.3.x) |
4.2.0.9 | 4.2.11 (4.2.x) |
4.1.0.10 | 4.1.11 (4.1.x) |
4.0.0.18 | 4.0.12 (4.0.x) |
3.5.0.15 | 3.5.30 (3.5.x) |
3.4.0.8 | 3.4.18 (3.4.x) |
3.3.0.4 | 3.3.9 (3.3.x) |
3.2.3.6 | 3.2.14 (3.2.x) |
3.1.3.9 | 3.1.9 (3.1.x) |
3.0.8.6 | 3.0.12 (3.0.x) |
3.5.0.0 | 3.5.0-beta01 |
3.4.0.2 | 3.4.5 |
3.3.0.3 | 3.3.5 |
3.2.3.5 | 3.2.3 |
3.1.3.8 | 3.1.5 |
3 安装流程
-
下载二进制 jar 并将其放到本地文件夹$NEO4J_HOME$/plugins下
-
将以下内容添加到$NEO4J_HOME$/conf/neo4j.conf文件中:
-
出于安全原因,默认情况下Neo4j禁用使用内部 API 。它们可以通过在$NEO4J_HOME/conf/neo4j.conf指定配置来启用)
dbms.security.procedures.unrestricted=apoc.*
-
将apoc中一般要加载的过程和函数列入白名单 (允许运行的程序列表中)
dbms.security.procedures.whitelist=apoc.coll.*,apoc.load.*
-
-
重启Neo4j,确认是否安装成功,如果返回APOC版本号,即为安装成功
RETURN apoc.version() as version
4 使用apoc样例
cypher apoc中的并集函数
在APOC库中,可以使用apoc.coll.union
函数执行集合的并集操作。apoc.coll.union
函数用于将两个或多个集合合并为一个包含所有元素的新集合。
以下是使用apoc.coll.union
函数执行集合并集操作的示例:
cypherCopy codeMATCH (p1:Person {name: 'John'})
MATCH (p2:Person {name: 'Alice'})
RETURN apoc.coll.union(p1.hobbies, p2.hobbies) AS mergedHobbies
在上述示例中,我们使用MATCH子句分别匹配名为"John"和"Alice"的"Person"节点。然后,在RETURN子句中,我们使用apoc.coll.union
函数将这两个节点的"hobbies"集合属性合并为一个新的集合,并将结果命名为"mergedHobbies"。
查询结果将返回一个包含合并后兴趣爱好的列表,即这两个"Person"节点的"hobbies"集合的并集。
cypher apoc中的交集函数
在Cypher中,可以使用INTERSECTION
关键字来执行集合的交集操作。INTERSECTION
关键字用于找到两个或多个集合之间的共同元素。
以下是使用INTERSECTION
关键字执行集合交集操作的示例:
cypherCopy codeMATCH (p1:Person {name: 'John'})
MATCH (p2:Person {name: 'Alice'})
RETURN apoc.coll.intersection(p1.hobbies, p2.hobbies) AS commonHobbies
在上述示例中,我们使用MATCH子句分别匹配名为"John"和"Alice"的"Person"节点。然后,在RETURN子句中,我们使用apoc.coll.intersection
函数找到这两个节点的"hobbies"集合属性之间的共同元素,并将结果命名为"commonHobbies"。
查询结果将返回一个包含共同兴趣爱好的列表,即这两个"Person"节点的"hobbies"集合的交集。