You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Gremlin TinkerPop从根节点查询指定层级含兄弟节点的所有对象?

Gremlin实现指定层级及所有上层节点(含兄弟)的查询

核心逻辑

需求本质是获取所有深度≤指定层级且≥1的节点(根节点为深度0,不在输出范围内),通过遍历根节点向下的所有路径,收集各层级节点并去重即可满足要求。

通用查询模板

假设根节点通过标签root定位,节点名称存储在name属性中,level为输入的目标层级(如1、2、3):

g.V().hasLabel('root')
  .repeat(out())
    .emit()
    .times(level)
  .dedup()
  .values('name')

分场景示例

输入层级1时的查询

g.V().hasLabel('root')
  .repeat(out())
    .emit()
    .times(1)
  .dedup()
  .values('name')

输出:Eq1、Eq2、Eq3、Eq5

输入层级2时的查询

g.V().hasLabel('root')
  .repeat(out())
    .emit()
    .times(2)
  .dedup()
  .values('name')

输出:Eq1、Eq2、Eq3、Eq4、Eq5

输入层级3时的查询

g.V().hasLabel('root')
  .repeat(out())
    .emit()
    .times(3)
  .dedup()
  .values('name')

输出:Eq1、Eq2、Eq3、Eq4、Eq4.1、Eq5

语句说明

  • hasLabel('root'):定位到层级结构的根节点,若根节点通过其他属性标识,可替换为has('name', 'root')等对应条件。
  • repeat(out()):重复执行子节点遍历操作,实现向下层级探索。
  • emit():每次遍历到节点时将其纳入结果集,确保所有中间层级的节点都被收集。
  • times(level):控制最大遍历深度,与输入的目标层级一致。
  • dedup():去除重复节点,避免同一节点被多条路径遍历导致重复输出。

内容的提问来源于stack exchange,提问作者solveit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 10:42:45