neo4j - 以图形形式获取数据的 API 工作流程
问题描述
我在 neo4J 中建模一个图来存储 API 系统的所有关系/查询。例如,一个 API API 1
-GET:/api/employee/{email}
接收电子邮件并返回id
。第二个 APIAPI 2
GET:/api/employee/salary/{e_id}
接受EmployeeId
并返回Salary
. 图形表示看起来像这样。
例如,给定一封电子邮件,我想编写一个查询来找出可以从该系统中提取的所有内容。对于上图,输出将类似于:
API 1 - input - email
API 1 - output - employee_id
API 2 - input - employee_id
API 2 - output - Salary
如果有更好/更短的路径可以输出特定的数据项,算法需要提出建议。我相信我需要的是单源最短路径算法的变体,但我不确定如何进行。如果有更好的方法对此图进行建模以提高查询性能,请告诉我
解决方案
假设图中的标签是:Api
and:Parameter
并且节点都有一个name
属性,那么这个 Cypher 将返回所有的 API 和它们的输入和输出参数的列表:
MATCH (a:Api)
WITH a AS apis
MATCH (apis)-[:INPUT]->(ip:Parameter)
WITH apis, COLLECT(ip.name) AS inputParams
MATCH (apis)-[:OUTPUT]->(op:Parameter)
WITH apis, inputParams, COLLECT(op.name) AS outputParams
RETURN apis.name as apiName, inputParams, outputParams
推荐阅读
- css - CSS如何在两个项目重叠的部分更改颜色?
- javascript - 使用 axios 将参数传递给 POST 调用
- java - 为什么 Serializable 和 Parcelable extras 没有保存在 PendingIntent 中?
- reactjs - handleClick 函数中的 useDispatch
- domain-driven-design - 如何加载聚合?
- db2 - Mybaits resultMap 没有列,使用 columnIndex 代替
- python - 如何从 DateTimeIndex 中获取最小值和最大值
- vue.js - Fullcalendar 和 Vuex
- javascript - 无法在电子中发送和接收数据
- javascript - 从表单中删除行而不更新表单