Я хочу, чтобы сравнить число ребер вокруг с номером и печати true
или false
, что-то вроде этого: g.V().out().count()==0
но ==
не работал здесь, он всегда возвращается false
. Есть ли альтернативный способ?Как вернуть истинным или ложным в гном
3
A
ответ
3
То, что возвращается последним шагом count(), является обходом, который предоставляет интерфейс итератора, который может использоваться для извлечения результатов.
Если ваша цель состоит в том, чтобы сосчитать все затраченные края всех вершин в графе, возвращает этот один номер, и сравнить, что на 0, это будет работать:
gremlin> g.V().out().count().next()==0
==>false
Если ваша цель состоит в том, чтобы сделать сравнение с 0 в пределах языка Gremlin, то есть() шаг может быть использован для проверки числа на равенство:
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]
0
Вы можете просто цепь .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