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