Как извлечь необработанные значения для сравнения или обработки из Gremlin (Tinkerpop)

Я знаю, что мне не хватает чего-то очевидного здесь. Я пытаюсь извлечь значения из TitanDB с помощью Gremlin, чтобы сравнить их в Groovy.

graph = TinkerFactory.createModern()
g = graph.traversal(standard())
markoCount = g.V().has('name','marko').outE('knows').count()
lopCount = g.V().has('name','lop').outE('knows').count()
if(markoCount > lopCount){
// Do something
}

Но, по-видимому, то, что я на самом деле (неправильно) здесь делаю, - это сравнение шагов обхода, которые, очевидно, не сработают:

Невозможно сравнить org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.DefaultGraphTraversal со значением '[TinkerGraphStep(vertex,[name.eq(marko)]), VertexStep(OUT,[knows],edge), CountGlobalStep] ' и org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.DefaultGraphTraversal со значением '[TinkerGraphStep(vertex,[name.eq(lop)]), VertexStep(OUT,[knows],edge), CountGlobalStep] '

У меня такая же проблема с извлечением значений из свойств для использования в Groovy. Я не нашел ничего в документах, указывающих, как установите необработанные значения, подобные этому.

Что нужно для возврата фактических значений из Gremlin, которые я могу использовать позже в своем коде Groovy?


person Fook    schedule 22.04.2016    source источник
comment
Разве вам не нужно .path() в конце .count(), чтобы получить список счетчиков для каждого пути?   -  person tim_yates    schedule 22.04.2016
comment
Я думаю, что мне нужно next(), чтобы получить фактическое значение. Кажется, это работает.   -  person Fook    schedule 22.04.2016


Ответы (1)


Разобрался, нужно было next():

graph = TinkerFactory.createModern()
g = graph.traversal(standard())
markoCount = g.V().has('name','marko').outE('knows').count().next()
lopCount = g.V().has('name','lop').outE('knows').count().next()
if(markoCount > lopCount){
// Do something
}
person Fook    schedule 22.04.2016