neo4j apoc 系列
Neo4j APOC-01-圖資料庫 apoc 外掛介紹
Neo4j APOC-01-圖資料庫 apoc 外掛安裝 neo4j on windows10
Neo4j APOC-03-圖資料庫 apoc 實戰使用使用
Neo4j APOC-04-圖資料庫 apoc 實戰使用使用 apoc.path.spanningTree 最小生成樹
neo4j 的 apoc
Neo4j 的 APOC(Awesome Procedures on Cypher)是一個非常強大的 Neo4j 外掛,它擴充套件了 Cypher 查詢語言的功能,提供了大量的實用函式和儲存過程,極大地增強了 Neo4j 的功能性。
APOC 適用於需要更復雜資料處理和操作的場景,支援各種資料轉換、圖演算法、資料匯入/匯出、整合外部系統等操作。
1. APOC 的基本功能
APOC 外掛包含了以下幾類常用功能:
-
資料轉換和處理:
- 支援各種圖資料的轉換,例如將節點和關係轉換為其他格式(JSON、CSV 等),以及對圖的結構和資料進行各種操作(過濾、聚合、排序等)。
- 提供了對集合、字串、日期等資料型別的操作函式。
-
圖演算法:
- APOC 提供了許多圖演算法(如最短路徑、中心度、PageRank 等),雖然 Neo4j 本身也有圖演算法庫(Graph Data Science),但是 APOC 是一個更加輕量級的選擇,適用於簡單的圖分析任務。
-
儲存過程:
- 提供了豐富的儲存過程,例如批次資料插入、更新、刪除、匯入匯出等。
- 支援對圖資料庫的各種操作進行封裝,並簡化複雜操作。
-
與外部系統的整合:
- APOC 支援透過 HTTP 訪問外部 REST API,或者與檔案系統互動(如上傳、下載檔案),以便整合外部資料來源。
- 也支援與外部資料庫的連線,如匯入其他資料庫的資料到 Neo4j。
總結
APOC 是一個功能豐富且靈活的 Neo4j 外掛,它為 Cypher 查詢語言提供了大量實用的擴充套件,涵蓋了資料處理、圖演算法、外部系統整合等方面。
透過使用 APOC,開發者可以大大提高圖資料庫的操作效率和靈活性,尤其是在複雜的資料處理和分析任務中。
apoc 常用的功能
下面是一些常用的 APOC 外掛功能和示例
功能 | 儲存過程/函式 | 描述 | 示例 |
---|---|---|---|
資料轉換 | apoc.convert.toJson() |
將節點、關係或任何圖資料結構轉換為 JSON 格式 | MATCH (n:Person) RETURN apoc.convert.toJson(n) |
集合操作 | apoc.coll.flatten() |
將巢狀的集合扁平化 | RETURN apoc.coll.flatten([[1, 2], [3, 4]]) |
apoc.coll.sum() |
計算集合中所有元素的和 | RETURN apoc.coll.sum([1, 2, 3, 4]) |
|
apoc.text.join() |
將集合中的元素連線成一個字串 | RETURN apoc.text.join(['a', 'b', 'c'], ',') |
|
圖演算法 | apoc.algo.shortestPath() |
計算兩個節點之間的最短路徑 | MATCH (start:Person {name: 'Alice'}), (end:Person {name: 'Bob'}) CALL apoc.algo.shortestPath(start, end, 'KNOWS') YIELD path RETURN path |
apoc.algo.dijkstra() |
Dijkstra 演算法計算最短路徑 | MATCH (start:Person {name: 'Alice'}), (end:Person {name: 'Bob'}) CALL apoc.algo.dijkstra(start, end, 'KNOWS') YIELD path RETURN path |
|
匯入/匯出資料 | apoc.import.csv() |
從 CSV 檔案匯入資料 | CALL apoc.import.csv('file:///path/to/file.csv', {header:true}) YIELD nodes, relationships RETURN nodes |
apoc.export.csv.all() |
將所有圖資料匯出為 CSV 檔案 | CALL apoc.export.csv.all('file:///output.csv', {}) |
|
apoc.load.csv() |
從 CSV 檔案中載入資料 | CALL apoc.load.csv('file:///path/to/file.csv') YIELD map RETURN map |
|
apoc.load.json() |
從外部 URL 載入 JSON 資料 | CALL apoc.load.json('http://example.com/data.json') YIELD value RETURN value |
|
外部系統整合 | apoc.load.xml() |
從外部 URL 載入 XML 資料 | CALL apoc.load.xml('http://example.com/data.xml') YIELD value RETURN value |
apoc.load.http() |
透過 HTTP 請求獲取外部資料 | CALL apoc.load.http('http://example.com/api') YIELD value RETURN value |
|
日期和時間處理 | apoc.date.convert() |
將日期時間字串轉換為時間戳 | RETURN apoc.date.convert('2024-11-01T12:00:00', 'ISO_8601', 'milliseconds') |
圖資料操作 | apoc.create.node() |
建立節點併為其設定屬性 | CALL apoc.create.node(['Person'], {name: 'Alice', age: 30}) YIELD node RETURN node |
apoc.create.relationship() |
建立關係並設定屬性 | MATCH (a:Person {name: 'Alice'}), (b:Person {name: 'Bob'}) CALL apoc.create.relationship(a, 'KNOWS', {since: 2020}) YIELD rel RETURN rel |
|
事務和批次操作 | apoc.periodic.iterate() |
按批次進行迭代處理 | CALL apoc.periodic.iterate('MATCH (n:Person) RETURN n', 'SET n.processed = true', {batchSize: 1000}) YIELD batches, total RETURN batches, total |
效能監控與統計 | apoc.stats() |
返回資料庫的統計資訊 | RETURN apoc.stats() |
路徑和圖遍歷 | apoc.path.expand() |
擴充套件路徑,獲取指定節點的鄰居 | MATCH (a:Person {name: 'Alice'}) CALL apoc.path.expand(a, 'KNOWS', 1) YIELD path RETURN path |
apoc.path.subgraphNodes() |
獲取路徑的子圖節點 | MATCH (a:Person {name: 'Alice'}) CALL apoc.path.subgraphNodes(a, {relationshipFilter: 'KNOWS'}) YIELD node RETURN node |
|
字串處理 | apoc.text.split() |
按指定分隔符將字串分割成多個部分 | RETURN apoc.text.split('a,b,c,d', ',') |
apoc.text.replace() |
在字串中進行替換操作 | RETURN apoc.text.replace('Hello World', 'World', 'Neo4j') |
這些功能覆蓋了圖資料庫的許多常見操作,如資料轉換、匯入匯出、圖演算法、路徑計算等,能夠有效擴充套件 Neo4j 的使用場景。
參考資料
https://www.cnblogs.com/liaozk/p/17138133.html
https://www.w3cschool.cn/neo4j/neo4j_cql_introduction.html