2

これは期待どおりに機能します。

gremlin> root.out.outE.has('size', 4).count()
==>3
gremlin> result = root.out.outE.has('size', 4).count()
==>3
gremlin> result
==>3
gremlin> root.out.outE.has('count', 4).getClass()         
==>class com.tinkerpop.gremlin.groovy.GremlinGroovyPipeline

GremlinGroovyPipelineを変数に格納すると、count()それはもうできません。

gremlin> result = root.out.outE.has('size', 4)        
==>e[359:200:36028797018964014][200-sizes->40]
==>e[669:404:36028797018964014][404-sizes->400]
==>e[855:516:36028797018964014][516-sizes->524]
gremlin> result.count()
==>0
gremlin> result.getClass()
==>class com.tinkerpop.gremlin.groovy.GremlinGroovyPipeline

これは私にはかなり奇妙です。変数が割り当てられると、結果は失われるようです。

BDBでTitanを使用しています。

4

2 に答える 2

3

パイプラインはイテレータであるため、パイプラインが使い果たされると「空」になります。Gremlin Consoleはパイプラインを自動的に反復するため、パイプラインを変数に格納している場合でも、リストを効果的に使い果たします。

わかりやすくするために、この例を検討してください

gremlin> g = TinkerGraphFactory.createTinkerGraph()
==>tinkergraph[vertices:6 edges:6]
gremlin> pipeline=g.v(1).out
==>v[2]
==>v[4]
==>v[3]
gremlin> pipeline.next()
com.tinkerpop.pipes.util.FastNoSuchElementException
Display stack trace? [yN] n
gremlin> pipeline.count()
==>0

例のように、パイプラインには何も残っていないことに注意してください。したがって...後で評価するために、反復されていないパイプラインを変数に「格納」する場合は、コンソールがそれを自動反復しないようにする必要があります。

gremlin> pipeline=g.v(1).out;null
==>null
gremlin> pipeline.count()        
==>3

もちろん、それを繰り返すと....それは空です:

gremlin> pipeline.count()
==>0

そして、そのパイプラインを再度初期化する必要があります。

gremlin> pipeline=g.v(1).out;null
==>null
gremlin> pipeline.next()         
==>v[2]
gremlin> pipeline.next()
==>v[4]
gremlin> pipeline.next()
==>v[3]
gremlin> pipeline.next()
com.tinkerpop.pipes.util.FastNoSuchElementException
Display stack trace? [yN] n
gremlin> pipeline.count()        
==>0

したがって、結果を引き続き処理したい場合にできる最善のことは、自分自身への応答で行ったようにリストを反復処理することです。

gremlin> l=[];g.v(1).out.fill(l)    
==>v[2]
==>v[4]
==>v[3]
gremlin> l.size()
==>3
于 2013-08-17T12:11:39.550 に答える
0

私が発見した解決策の1つは、最初にリストに変換することですが、理想的ではないようで、この変数の動作が異なる理由を実際には教えてくれません。

gremlin> result = root.out.outE.has('size', 4).toList()
==>e[359:200:36028797018964014][200-sizes->40]
==>e[669:404:36028797018964014][404-sizes->400]
==>e[855:516:36028797018964014][516-sizes->524]
gremlin> result.size()
==>3
于 2012-10-31T05:15:53.377 に答える