当前位置: 首页 > 知识库问答 >
问题:

如何在Java中使用gremlin遍历图时收集属性值?

强志学
2023-03-14
            g.traversal().V().hasLabel(L)
            .has("name", S1)
            .repeat(__.optional(__.out(EL)))
            .until(__.out(EL).count().is(0))
            .path()
            .forEachRemaining(path -> {
             path.forEach(e -> System.out.println(((Vertex)e).property("name").value()));});

目前,结构是一棵树,但如果有循环,上面的代码是否防止了无休止的循环?如果没有,这又怎能做到呢?

共有1个答案

茅曾琪
2023-03-14

你的方法是一个好的开始。

要从一组多个顶点开始,请使用p.intern()谓词。TinkerPop提供了其他几个谓词。

使用SimplePath()防止重复循环

graph.traversal().V().hasLabel(L).has("name", P.within(S)).
  repeat( __.out(EL).simplePath().store("x").by("name") ).
  until( __.outE(EL).count().is(0) ).
  cap("x").unfold().dedup().toSet()
 类似资料:
  • 编辑:在@Prashant回答后,我明白我的输出顺序需要保留,因此我相应地编辑了我的原始问题并重新发布。 我想从根节点(2)遍历到叶节点(1、6、8、3、11和12)。在这种遍历过程中,我希望获取连接到产品节点13(即)的节点,我希望编写一个返回1、8、9、3、11和12的查询。 @Prashant的回答: 输出 然而,我所需输出的顺序是1、8、9、3、11和12,即在每个级别上,要求选择一个子节

  • 问题内容: 我正在尝试使用Powershell访问JSON对象的特定属性值。不幸的是,我不知道结构中某些父级属性的键,因此我无法直接做到这一点。另外,由于JSON不是数组,因此无法通过索引位置访问。 上下文是我正在从elasticsearch查询正在运行的任务列表,并且需要获取任务的ID(我知道只有一个),因此我可以进行后续调用以发现其完成状态。 我已经研究了一些查询方法,但是不确定如何应用它们(

  • 问题内容: 是否可以在Swift中遍历结构的属性? 我需要在使用许多不同单元格类型的视图控制器中注册单元格重用标识符(单元格组织在不同的nib文件中)。所以我的想法是将所有重用标识符和对应的nib文件作为静态元组属性(reuseID,nibName)放入结构中。但是,如何遍历所有这些元素以将单元格注册到tableView? 我已经尝试过一些东西(请参阅下面的答案)。但是有没有更简单的方法来做到这一

  • 如何从Java对象输出Gremlin查询?默认输出()看起来像这不容易阅读。

  • 在尝试编写仅在顶点Vo到顶点Vi之间没有现有边时匹配的遍历时(其中Vi的ID可能无法提前知道,因此必须通过遍历指定Vi)。 我进行了这个初始遍历: 我的问题是,我不知道如何在嵌套匿名遍历中使Vi可用;我想到的一切都会导致这个错误 我已经调试了对getScopeValue的调用,事实上,当我到达那里时,从未定义过Vi。 我尝试填充Vi的方法包括: 据我所知,这是一些作用域规则的结果,该规则将嵌套匿名