Gremlin 远程调用的traversal.asAdmin().addStep(步骤)

Gremlin 远程调用的traversal.asAdmin().addStep(步骤),gremlin,tinkerpop,janusgraph,gremlin-server,Gremlin,Tinkerpop,Janusgraph,Gremlin Server,我正在尝试使用Java客户端构建到远程JanusGraph服务器的复杂遍历 以下遍历返回由标签“mylabel”标识的ReferenceVertex元素: 我做错了什么?我认为您不需要使用任何asAdmin()方法。与其构建匿名遍历来尝试附加到父遍历,我认为最好只传递父GraphTraversal实例,并根据需要简单地添加步骤: private static GraphTraversal addFilters(GraphTraversal t) { return t.hasLabel("

我正在尝试使用Java客户端构建到远程JanusGraph服务器的复杂遍历

以下遍历返回由标签“mylabel”标识的ReferenceVertex元素:


我做错了什么?

我认为您不需要使用任何
asAdmin()
方法。与其构建匿名遍历来尝试附加到父遍历,我认为最好只传递父
GraphTraversal
实例,并根据需要简单地添加步骤:

private static GraphTraversal addFilters(GraphTraversal t) {
    return t.hasLabel("mylabel");
}

...

GraphTraversal<Vertex, Vertex> t = g.V();
t = addFilters(t);
List<Vertex> r = t.toList();

我并不特别喜欢这种方法,因为根据您所做的工作,您可能会欺骗出优化您的遍历的JanusGraph遍历策略,并且您将失去一些性能优化。我也不太喜欢这种风格——只是将
GraphTraversal
传递给需要使用新步骤对其进行变异的函数似乎更为自然。您可能还会发现关于遍历重用的信息很有帮助。

很高兴听到……既然一切都很好,请您接受这些答案好吗?最终理解我的问题。就我而言,所有远程案例都失败了。
GraphTraversal<Vertex, Vertex> addMe = __.hasLabel("mylabel");
GraphTraversal<Vertex, Vertex> t = g.V();
for (Step<?, ?> step : addMe.asAdmin().getSteps()) {
     t.asAdmin().addStep(step);
}
List<Vertex> r = t.toList();
[GraphStep(vertex,[]), HasStep([~label.eq(mylabel)])]
private static GraphTraversal addFilters(GraphTraversal t) {
    return t.hasLabel("mylabel");
}

...

GraphTraversal<Vertex, Vertex> t = g.V();
t = addFilters(t);
List<Vertex> r = t.toList();
GraphTraversal<Vertex, Vertex> addMe = __.hasLabel("mylabel");
GraphTraversal<Vertex, Vertex> t = g.V();
List<Vertex> r = t.filter(addMe).toList();