1.使用apoc.cypher.run()动态获取每个标签/类型的计数
apoc.cypher.run() 用于每次执行一个 Cypher 查询,可以让您从每次的计数存储中获取计数。
通过调用节点标签或关系类型,可以高效便捷的同时获取多个计数:
对于标签:
CALL db.labels() YIELD label
CALL apoc.cypher.run('MATCH (:`'+label+'`) RETURN count(*) as count',{}) YIELD value
RETURN label, value.count
对于关系:
CALL db.relationshipTypes() YIELD relationshipType as type
CALL apoc.cypher.run('MATCH ()-[:`'+type+'`]->() RETURN count(*) as count',{}) YIELD value
RETURN type, value.count
2.使用APOC库
从Neo4j 3.0开始,用户可以使用Java实现定制功能,从而将Cypher扩展为高度复杂的图形算法。 这就是所谓的用户定义程序概念。
APOC库(详见https://github.com/neo4j-contrib/neo4j-apoc-procedures)是最强大和最受欢迎的Neo4j库之一。 它包含许多算法(在编写本文时大约514个),以帮助处理数据集成,图形算法或数据转换等领域的许多不同任务。 毫不奇怪,它还有几个用于分析图数据库元数据的功能。要在Neo4j 3.x中启用APOC,有几个简单的步骤:
(1)停止Neo4j服务
(2)将最新版本的APOC JAR文件下载并复制到数据库下的plugins文件夹
(3)将以下行添加到neo4j.conf文件中:dbms.security.procedures.unrestricted = apoc.*
(4)再次启动Neo4j服务
2.1内容
调用 apoc.meta.stats() 将返回以下值:
labelCount – 图中标签数
relTypeCount – 图中关系类型数
propertyKeyCount – 图中属性键数量
nodeCount – 图中节点数
relCount – 图中关系数
labels – 每种标签的映射及该标签的计数
relTypes – 每种关系模式的映射,包含关系类型、每种标签作为结束节点的模式及相关的计数
relTypesCount – 每种关系类型的映射及该类型的计数
stats –包含上述所有计数的映射
2.2 用法
labels 计数通常最有用,类似方法可以用于其它:
CALL apoc.meta.stats() YIELD labels
RETURN labels
返回如下映射:
{
"计算机类": 1,
"身份": 1,
"攻击活动": 1,
"攻击模式": 4,
"脆弱性": 1,
"安全防护类": 1,
"主板": 1,
"威胁主体": 1,
"入侵集合": 1,
"恶意软件": 1,
"网络通信类": 1,
"工具": 1
}