2016-04-22 3 views
1

Ich weiß, ich vermisse etwas offensichtlich hier. Ich versuche Werte aus TitanDB mit Gremlin zu extrahieren, um sie in Groovy zu vergleichen.So extrahieren Sie Rohwerte für den Vergleich oder Manipulation von 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 
} 

Aber anscheinend, was ich eigentlich (falsch) hier tut Schritte Vergleich Traversal, die offensichtlich nicht funktionieren:

kann nicht vergleichen org.apache.tinkerpop.gremlin.process.traversal. dsl.graph.DefaultGraphTraversal mit dem Wert '[TinkerGraphStep (Vertex, [Name.eq (Marko)]), VertexStep (OUT, [weiß], Kante), CountGlobalStep]' und org.apache.tinkerpop.gremlin.process.traversal. dsl.graph.DefaultGraphTraversal mit dem Wert '[TinkerGraphStep (Vertex, [Name.eq (lop)]), VertexStep (OUT, [kennt], Kante), CountGlobalStep]'

Ich habe das gleiche Problem beim Extrahieren von Werten aus Eigenschaften für die Verwendung in Groovy. Ich habe nichts in der docs angezeigt, die angibt, wie Rohwerte wie folgt festgelegt werden.

Was ist erforderlich, um tatsächliche Werte aus Gremlin zu erhalten, die ich später in meinem Groovy-Code verwenden kann?

+1

Sie nicht '.path benötigen()' am Ende der '.count()' für jeden Pfad eine Liste der Grafen zu bekommen? –

+0

Ich denke, was ich brauche, ist 'next()', um den tatsächlichen Wert zu erhalten. Das scheint zu funktionieren. – Fook

Antwort

1

es herausgefunden, ich next() benötigt:

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 
} 
Verwandte Themen