node_degree_in
関数は、有向グラフ内のノードに対する受信エッジの次数 (数) を計算します。
注
この関数は、 graph-match
演算子と graph-shortest-paths
演算子で使用されます。
構文
node_degree_in([
ノード])
構文規則について詳しく知る。
パラメーター
名前 | タイプ | 必須 | 説明 |
---|---|---|---|
ノード | string |
グラフ パターン内のグラフ ノード変数への参照。 all()、any()、map() グラフ関数内で inner_nodes() を使用する場合は、パラメーターを渡さないでください。 |
返品ポリシー
inner_nodes()で all()、any()、map() 関数内で使用する場合、入力ノードまたはすべての内部ノードの次数を返します。
例
次の例では、従業員とそのマネージャーの階層構造を分析するグラフを作成します。
グラフ一致演算子は、直属の部下が 3 つ (node_degree_in(manager) == 3) を持ち、内部ノード (従業員) に少なくとも 1 つのレポート (node_degree_in() > 1) があるマネージャーを探します。
このクエリでは、マネージャー、各直属のレポートの名前、マネージャーの学位、および各従業員の直属部下の数が返されます。
let employees = datatable(name:string, age:long)
[
"Alice", 32,
"Bob", 31,
"Eve", 27,
"Joe", 29,
"Chris", 45,
"Alex", 35,
"Ben", 23,
"Richard", 39,
];
let reports = datatable(employee:string, manager:string)
[
"Bob", "Alice",
"Chris", "Alice",
"Eve", "Bob",
"Ben", "Chris",
"Joe", "Alice",
"Richard", "Bob"
];
reports
| make-graph employee --> manager with employees on name
| graph-match (manager)<-[reports*1..3]-(employee)
where node_degree_in(manager) == 3 and any(inner_nodes(reports), node_degree_in() > 1)
project manager.name, employee.name,
reports_and_inner_nodes_degree_in = map(inner_nodes(reports), strcat(name, " has ", node_degree_in(), " reports")),
degree_in_m=node_degree_in(manager),
degree_out_e=node_degree_out(employee)
出力
manager_name | employee_name | reports_and_inner_nodes_degree_in | degree_in_m | degree_out_e |
---|---|---|---|---|
アリス | リチャード | ["Bob has 2 reports"] | 3 | 1 |
アリス | 前夜祭 | ["Bob has 2 reports"] | 3 | 1 |
アリス | エレン | [ "Bob has 2 reports", "Eve has 1 reports" ] |
3 | 1 |