2016-04-22 25 views
1

我知道我在这里丢失了一些明显的东西。我试图使用Gremlin从TitanDB中提取值,以便在Groovy中比较它们。如何从Gremlin(Tinkerpop)提取用于比较或操纵的原始值

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,[known],edge),'CountGlobalStep]'

我有同样的问题从Groovy中使用的属性中提取值。我没有看到docs中的任何内容,指示如何设置这样的原始值。

需要什么才能从Gremlin返回实际值,以后可以在我的Groovy代码中使用?

+1

你不需要在'.Count中()结束'。路径()''来获取计数的每个路径的一个列表? –

+0

我想我需要的是'next()'来获得实际的值。这似乎工作。 – Fook

回答

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 
}