Cosmos DB Gremlin API多入边顶点遍历:筛选指定环境下游服务
适配Cosmos DB Gremlin API的查询语句
你可以直接使用下面的简化版查询,完全匹配你描述的遍历逻辑,预期返回Service C:
g.V().has('Service', 'ServiceName', 'Service B') // 遍历到Service B发起的所有ServiceConnection连接顶点 .out('MAKES_CONNECTION').hasLabel('ServiceConnection') // 过滤仅保留关联了dev环境的连接顶点 .where( __.in('CONNECTION_ENVIRONMENT') .has('stage', 'dev') .has('env', 'dev') ) // 遍历到连接指向的目标服务顶点 .out('MAKES_CONNECTION') // 提取目标服务名称 .values('ServiceName')
步骤说明
- 起始顶点定位:通过标签和
ServiceName属性精准匹配Service B顶点,避免全表扫描,降低Cosmos DB RU消耗 - 第一层遍历:沿
MAKES_CONNECTION出边拿到Service B发起的所有连接对应的ServiceConnection顶点 - 环境规则过滤:使用
where步骤筛选ServiceConnection顶点,仅保留通过CONNECTION_ENVIRONMENT边关联的环境顶点同时满足stage=dev、env=dev的条目 - 第二层遍历:从符合环境要求的ServiceConnection顶点继续沿
MAKES_CONNECTION出边,拿到对端的目标服务顶点 - 结果提取:输出目标服务的
ServiceName属性
Cosmos DB 使用注意事项
建议给
Service顶点的ServiceName属性、环境顶点的stage和env属性提前配置索引,可大幅降低查询的RU消耗,提升执行效率。
内容的提问来源于stack exchange,提问作者scphantm
相关产品推荐
相关产品推荐

