【发布时间】:2016-11-27 04:54:38
【问题描述】:
我想将 a 周围的边数与数字进行比较并打印 true 或 false,如下所示:
g.V().out().count()==0
但是== 在这里不起作用,它总是返回false。
有其他方法吗?
【问题讨论】:
标签: gremlin
我想将 a 周围的边数与数字进行比较并打印 true 或 false,如下所示:
g.V().out().count()==0
但是== 在这里不起作用,它总是返回false。
有其他方法吗?
【问题讨论】:
标签: gremlin
最后一个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]
【讨论】:
您可以简单地将.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
【讨论】: