代码之家  ›  专栏  ›  技术社区  ›  Srinath Ganesh

从路径打印/获取顶点值

  •  1
  • Srinath Ganesh  · 技术社区  · 6 年前

    刚刚开始学习gremlin。

    打印出所有的顶点值效果很好

    gremlin> g.V().values()
    ==>testing 2
    ==>Cash Processing
    ==>Sales
    ==>Marketing
    ==>Accounting
    

    我能够找到顶点之间所有直接连接的路径。

    gremlin> g.V().hasLabel('Process')
    .repeat(both().simplePath())
    .until(hasLabel('Process'))
    .dedup().path()
    ==>[v[25],v[28]]
    ==>[v[25],v[26]]
    ==>[v[26],v[27]]
    ==>[v[26],v[25]]
    

    现在,我正在尝试打印路径中的值,例如['Sales','Accounting',]而不是[v[25],v[28]]

    还没找到办法


    已尝试和 失败 具有

    1. 展开:不获取1-1映射

      小精灵>g、 V()。hasLabel(“进程”)。重复(两个()。simplePath())。直到(hasLabel('Process'))。重复数据消除()。路径()。展开()。值() ===>现金处理 ===>会计 ===>现金处理 ===>销售额 ===>销售额 ===>市场营销 ===>销售额 ===>现金处理

    2. 路径似乎属于不同的数据类型,不支持。values()函数

      小精灵>g、 V()。hasLabel('进程') 。重复(两个()。simplePath()) 。直到(hasLabel('Process')) 。重复数据消除()。路径()。值()

    组织。阿帕奇。修补匠。小精灵。过程遍历。步util。ImmutablePath不能强制转换为组织。阿帕奇。修补匠。小精灵。结构要素

    1. 尝试了以下谷歌搜索,但没有得到答案

    2. 在找到一个 here 这是针对java的,但对我不起作用

      l=[];g、 V()。。。。。路径()。填充(l)

    (但无法创建列表,无法为类org.apache.tinkerpop.gremlin.structure.VertexProperty$Cardinality设置只读属性:list。) )


    我已经在Gremlin控制台上运行了它(running./Gremlin.sh)

    1 回复  |  直到 6 年前
        1
  •  5
  •   Florian Hockmann    6 年前

    您可以使用 by step 调整路径内的元素。例如,通过提供 valueMap(true) by 您可以获得顶点的属性以及顶点标签及其ID:

    gremlin> g.V().repeat(both().simplePath()).times(1).dedup().path().by(valueMap(true))
    ==>[[id:1,name:[marko],label:person,age:[29]],[id:3,name:[lop],lang:[java],label:software]]
    ==>[[id:1,name:[marko],label:person,age:[29]],[id:2,name:[vadas],label:person,age:[27]]]
    ==>[[id:1,name:[marko],label:person,age:[29]],[id:4,name:[josh],label:person,age:[32]]]
    ==>[[id:2,name:[vadas],label:person,age:[27]],[id:1,name:[marko],label:person,age:[29]]]
    ==>[[id:3,name:[lop],lang:[java],label:software],[id:6,name:[peter],label:person,age:[35]]]
    ==>[[id:4,name:[josh],label:person,age:[32]],[id:5,name:[ripple],lang:[java],label:software]]
    

    我用的是TinkerPop的现代图形 玩具图形 通常用于此类示例。您的输出看起来会有点不同,您可能希望使用 valueMap(真) 对于 通过 调制器。这个 TinkerPop documentation of the path step 它本身包含两个更高级的示例 path().by() 你可能想去看看。