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
}