获取每个标签/类型的计数(Neo4j图数据库)

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
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章