我想将a周围的边数与数字进行比较并打印true
或false
,如下所示:
g.V().out().count()==0
但是==
在这里没有工作,它总是返回false
。
还有另一种方法吗?
答案 0 :(得分:3)
最后一个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]
答案 1 :(得分:0)
您可以简单地将joins('LEFT JOIN names ON names.user_id = users.id AND names.primary = 1')
.joins('LEFT JOIN emails ON emails.user_id = users.id AND emails.primary = 1')
.select('users.*, names.first_name AS f_name , emails.email AS user_email,
names.last_name AS l_name, names.middle_name AS m_name, ISNULL(names.first_name) AS name_present')
.order('name_present, f_name ASC, emails.email ASC')
.group('users.id')
链接到.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