运行 Cypher 片段
Cypher 可以在 APOC 中用作安全、图感知、部分编译的脚本语言。
过程概述
支持的过程在下表中描述
限定名称 | 类型 |
---|---|
apoc.cypher.doIt |
|
apoc.cypher.run |
|
apoc.cypher.runMany |
|
apoc.cypher.runFirstColumnMany |
|
apoc.cypher.runFirstColumnSingle |
|
示例:按标签快速计数节点
可以使用 count
函数快速计算特定标签的节点数量,但前提是查询仅限于包含 count
函数。例如
MATCH (:Person) RETURN count(*);
也可以使用 UNION ALL
子句组合多个与特定标签相关的节点计算
MATCH (:Person) RETURN count(*)
UNION ALL
MATCH (:Movie) RETURN count(*);
使用 WITH
子句则无法实现相同的功能
MATCH (:Person)
WITH count(*) as people
MATCH (:Movie) RETURN people, count(*) as movies;
此查询将通过遍历所有节点来计算计数,这是一个非常慢的操作。
为了更快地完成(在几毫秒内完成),可以使用 apoc.cypher.run
构建 COUNT()
语句并单独运行它们。
CALL db.labels() yield label
CALL apoc.cypher.run("match (:`"+label+"`) return count(*) as count", null) yield value
return label, value.count as count
类似的方法可以用来获取每个标签的属性键
CALL db.labels() yield label
CALL apoc.cypher.run("MATCH (n:`"+label+"`) RETURN keys(n) as keys LIMIT 1",null) yield value
RETURN label, value.keys as keys