【问题标题】:Java Gremlin API traverse in OrientDBOrientDB 中的 Java Gremlin API 遍历
【发布时间】:2018-06-19 16:01:56
【问题描述】:

我有一个关于在 OrientDB 中将 Gremlin API 与 Java 结合使用的问题。 所以,我创建了一个GremlinPipeline 对象,我想从这个管道对象跳转到下一个顶点:

GremlinPipeline pipe = new GremlinPipeline();
pipe.start(graph.getVertex("#18:0"));
pipe.out();

输出:

v(TokenClass)[#19:0]
v(TokenClass)[#19:1]
v(TokenClass)[#19:2]

使用这段代码,它在我的例子中返回三个顶点,到目前为止完美。现在我想再次遍历每个返回的顶点并将每个结果保存在单独的列表中。 我该如何实现呢? 我是否为每个顶点创建了一个新的GremlinPipeline 对象,还是有一个嵌套的GremlinPipeline 函数?

在此先感谢

【问题讨论】:

  • 您使用这么旧版本的 OrientDB/TinkerPop 有什么原因吗?多年来一直没有发布 TinkerPop 2.x。有什么理由不使用orientdb.com/docs/3.0.x/tinkerpop3/OrientDB-TinkerPop3.html
  • 是否对每个功能都实现了这样的功能?
  • 您只需使用 Gremlin 来遍历图形。 g.V("#18:0").out() 返回一个 Iterator,您可以循环访问 foreach 样式中返回的顶点。
  • 是的,但这会返回 Vertex 类型的对象。从这些顶点我想在另一个目录中再次遍历。
  • “目录”?如果您想再次遍历边缘,只需执行g.V().out().out() - 以下是有关 Gremlin 语言的更多信息:kelvinlawrence.net/book/Gremlin-Graph-Guide.html

标签: java graph orientdb gremlin tinkerpop


【解决方案1】:

好的,这是我网站上的误解。 GremlinPipeline 返回 Vertex 对象。关键点是,如果我们想开始一个新的GremlinPipeline,我们只需要一个返回的顶点,所以我们不需要重新调用 OrientDB 来检索想要的顶点。我们已经有了Vertex 对象来开始一个新的GremlinPipeline。例如,它看起来像这样:

GremlinPipeline pipe = new GremlinPipeline();

pipe.start(graph.getVertex("#18:0"));
pipe.out();

List<Vertex> currentTokenList = pipe.toList();
for (Vertex currentToken : currentTokenList) { //with the currentToken we can start a new GremlinPipeline
    System.out.println("aktuelles Token " + currentToken);
    GremlinPipeline pipe2 = new GremlinPipeline();
    pipe2.start(currentToken);
    pipe2.out();
    List<Vertex> currentRIDList = pipe2.toList();
    for (Vertex ridVertex : currentRIDList) {
        System.out.println(ridVertex);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多