Neo4j圖數據庫高級應用系列 / 服務器擴展指南 APOC(4.4) - 自定義Cypher函數和過程

1、定義

APOC提供相關過程來創建用戶自定義的函數和過程。這些函數和過程實際上是參數化的Cypher語言查詢,類似宏(Macro)的概念。相關過程如下:

  1. apoc.custom.asFunction(),創建用戶自定義函數;
  2. apoc.custom.asProcedure(),創建用戶自定義過程。

用戶自定義函數和過程可以通過CALL dbms.functions和CALL dbms.procedures查看,所有自定義函數和過程自動被加上custom爲前綴,例如custom.MyProcedure。

2、調用接口

CALL apoc.custom.asProcedure(
   name,
   statement,
   mode,
   outputs,
   inputs,
   description
)

 

CALL apoc.custom.asProcedure(
   name,
   statement,
   mode,
   outputs,
   inputs,
   description
)

參數名

類型

默認值

可爲空?

說明

name

字符串

過程或函數名

statement

字符串

過程或函數包含的Cypher查詢

mode

字符串

'read'

查詢執行模式,取值'read'或'write'

outputs

名稱-類型對的數組

輸出字段及其類型,格式如下:
[ ['item1','type1'],  
  ['item2','type2'],
  …

]

合法的類型值參見下面的表格

inputs

名稱-類型對的數組

輸入參數及其類型,格式如下:
[ ['param1','type1'],  
  ['param2','type2'],
  …

]

合法的類型值參見下面的表格

description

字符串

函數/過程的描述內容


3、示例

// (1) 創建用戶自定義過程:搜索祖孫關係。
//  參數:- 過程名: findGrandParents
//        - statement: 搜索2度“父子”關係 
//        - mode: READ / 只讀
//        - 輸出結果: grandparent/節點, grandson/節點
//        - 輸入參數: name/人物姓名

CALL apoc.custom.asProcedure(
   'findGrandParents', 
   'MATCH (n) <-[父子*2]- (m:人物{name:$name}) RETURN n AS grandParent, m AS grandSon',
   'read',
   [['grandParent','NODE'],['grandSon','NODE']],
   [['name','STRING']]
)

// (2) 調用用戶自定義過程:搜索司馬炎的祖孫關係。
CALL custom.findGrandParents('司馬炎') 
YIELD grandParent, grandson
RETURN *

 

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