inner_nodes()
图形函数允许访问 可变长度边缘的内部节点。 它只能用作 all(、any()和 map() 图形函数的第一个参数。
语法
inner_nodes(
边缘)
参数
名字 | 类型 | 必填 | 说明 |
---|---|---|---|
边缘 | string |
✔️ | 图形匹配运算符 或 图形最短路径运算符 模式中的可变长度边缘。 有关详细信息,请参阅 图形模式表示法。 |
退货
将或 all
any
表达式的执行范围map
设置为可变长度边缘的内部节点。
例子
本节中的示例演示如何使用语法帮助你入门。
查找经理组织中的所有员工
以下示例表示组织层次结构。 它显示了单个图形查询中的可变长度边缘如何用于在组织层次结构中查找不同级别的员工。 图中的节点表示员工,边缘将员工连接到其经理。 使用 make-graph
运算符生成图形后,all()
和 inner_nodes
函数用于搜索 Alice 组织的员工,除了 Alice,他们拥有 40 岁以下的经理。 然后,map()
和 inner_nodes
一起使用来获取这些经理的姓名。
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..5]-(employee)
where manager.name == "Alice" and all(inner_nodes(reports), age < 40)
project employee = employee.name, manager = manager.name, reportingPath = map(inner_nodes(reports), name)
输出
员工 | 经理 | reportingPath |
---|---|---|
鲍勃 | 爱丽丝 | [] |
克里斯 | 爱丽丝 | [] |
乔 | 爱丽丝 | [] |
前夕 | 爱丽丝 | [“Bob”] |
理查 | 爱丽丝 | [“Bob”] |