【问题标题】:How to return true or false in gremlin如何在 gremlin 中返回 true 或 false
【发布时间】:2016-11-27 04:54:38
【问题描述】:

我想将 a 周围的边数与数字进行比较并打印 true 或 false,如下所示: g.V().out().count()==0 但是== 在这里不起作用,它总是返回false。 有其他方法吗?

【问题讨论】:

    标签: gremlin


    【解决方案1】:

    最后一个count()步骤返回的是一个遍历,它提供了一个迭代器接口,可以用来取回结果。

    如果您的目标是计算图中所有顶点的所有出边,返回该单个数字,并将其与 0 进行比较,这将起作用:

    gremlin> g.V().out().count().next()==0
    ==>false
    

    如果您的目标是在 Gremlin 语言中与 0 进行比较,则 is() 步骤可用于测试数字是否相等:

    gremlin> g.V().out().count().is(0)
    ==>v[2]
    ==>v[3]
    ==>v[5]
    

    如果要打印布尔结果:

    gremlin> g.V().choose(out().count().is(0), constant(true), constant(false))
    ==>false
    ==>true
    ==>true
    ==>false
    ==>true
    ==>false
    

    或者可能返回带有每个顶点及其测试结果的地图?

    gremlin> g.V().as('a').choose(out().count().is(0), constant(true), constant(false)).as('b').select('a','b')
    ==>[a:v[1],b:false]
    ==>[a:v[2],b:true]
    ==>[a:v[3],b:true]
    ==>[a:v[4],b:false]
    ==>[a:v[5],b:true]
    ==>[a:v[6],b:false]
    

    【讨论】:

      【解决方案2】:

      您可以简单地将.hasNext() 链接到Traversal,因为它是一个迭代器。

      从空白图表开始:

      gremlin> graph = TinkerGraph.open()
      ==>tinkergraph[vertices: 0 edges:0]
      gremlin> g = graph.traversal()
      ==>graphtraversalsource[tinkergraph[vertices: 0 edges:0], standard]
      gremlin> g.V().hasNext()
      ==>false
      

      让我们添加一个顶点

      gremlin> g.addV('name', 'Alice')
      ==>v[0]
      gremlin> g.V().out().hasNext()
      ==>false
      gremlin> g.V().hasNext()
      ==>true
      

      【讨论】:

      • 我只用过这个。但是,问题是,考虑到我们只有 id (id-1) 的顶点,当你传递像 g.V('id-1','id-2').hasNext() 这样的 ID 时,它只返回 true。它仅在找到单个顶点/边时才有效
      猜你喜欢
      • 2020-08-14
      • 2011-01-17
      • 1970-01-01
      • 2021-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多