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

如何在Gremlin 3.x API中执行匿名图遍历?

解决匿名Gremlin遍历的执行问题

核心原因

你用anonymousTraversal.asAdmin().setGraph(myGraph)无法获取数据,是因为匿名遍历(由__类创建)仅包含步骤逻辑,没有绑定完整的TraversalSource上下文。Gremlin遍历的执行需要依赖TraversalSource提供的策略、配置等环境,仅设置Graph不足以让它正常工作。而inject(0).union(...)能生效,是因为它把匿名遍历嵌入到了一个由合法TraversalSource生成的遍历中,补全了执行所需的上下文。

更简洁的实现方式

方法1:直接复用匿名遍历的步骤(兼容所有Gremlin 3.x版本)

通过获取匿名遍历的步骤集合,将其添加到由目标Graph生成的TraversalSource的遍历实例中:

// 初始化目标图的TraversalSource
GraphTraversalSource g = myGraph.traversal();
// 创建空的遍历实例,添加匿名遍历的所有步骤
GraphTraversal<?, ?> executableTraversal = g.getTraversal();
executableTraversal.asAdmin().addAllSteps(anonymousTraversal.asAdmin().getSteps());
// 执行遍历
List<?> results = executableTraversal.toList();

方法2:使用call()步骤(Gremlin 3.4+版本推荐)

Gremlin 3.4及以上版本提供了call()步骤,可以直接调用匿名遍历,语法更简洁:

GraphTraversalSource g = myGraph.traversal();
List<?> results = g.call(anonymousTraversal).toList();

这个方法本质上和你之前的union思路类似,但不需要额外的inject(0)冗余操作,直接让匿名遍历在TraversalSource的上下文中执行。

内容的提问来源于stack exchange,提问作者Martin Häusler

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 15:50:16