2017-11-23 7 views

答えて

3

ステップは、トラバーサルを通過するオブジェクトをトラバーサルの副作用として収集します。たとえばのは、私が(TinkerPopにパッケージ近代的なおもちゃのグラフを使用して)このトラバーサルを持っているとしましょう:

gremlin> g.V().has("name","marko").store("markos").outE() 
==>e[9][1-created->3] 
==>e[7][1-knows->2] 
==>e[8][1-knows->4] 

トラバーサルは自分にトラバースし、「マルコス」と呼ばれるリストで「マルコ」店舗、それらを命名し、すべての頂点を取得しますアウトエッジをoutE()とし、出力としてエッジを取得します。我々はトラバーサルのうち、その「マルコス」リストを取得したい場合は、追加のポイントとして、私たちはトラバーサルをcap()する必要があります。

gremlin> g.V().has("name","marko").store("markos").outE().cap('markos') 
==>[v[1]] 

store()ステップは、この文脈ではあまり役に立たないですが、グレムリンを伝えるためにそれを使用して想像しますグラフの周りを歩いている間、あなたのために物を集める。おそらく、あなたは、例えば、エッジの束を収集するために彼に言うことができる:

gremlin> g.V().has("name","marko").outE().store("edges").inV().outE().store('edges').inV().cap('edges') 
==>[e[9][1-created->3],e[7][1-knows->2],e[8][1-knows->4],e[10][4-created->5],e[11][4-created->3]] 

をまた副作用へのアクセスを許可する工程を経て経てstore()によって集められたリストを参照することができます。 store()がその作業に怠惰であることを思い出すことは重要である

gremlin> g.V().has("name","marko").store('marko').out().in() 
==>v[1] 
==>v[4] 
==>v[6] 
==>v[1] 
==>v[1] 
gremlin> g.V().has("name","marko").store('marko').out().in().where(without('marko')) 
==>v[4] 
==>v[6] 

:一般的な使用例は、既にトラバース何かを無視するかもしれません。トラバーサルが実行されるときに収集されます。逆の場合は、評価に熱心なaggregate()と一緒に行かなければなりません(aggregate()が呼び出されるまでトラバーサルを使い果たします)。

キーワードselect()を使用すると、トラバーサルの前の部分にアクセスしたり、マップを分割したりすることができます。前者に関しては、あなたがアクセスする必要があるかもしれません手順ラベル:私はあなたが選択する必要があるときのための具体的な使用例があることをわからない

gremlin> g.V().has('name','marko').valueMap().select('name') 
==>[marko] 
gremlin> g.V().has('name','marko').valueMap().select(values) 
==>[[marko],[29]] 

gremlin> g.V().has("name","marko").as('a').outE().select('a') 
==>v[1] 
==>v[1] 
==>v[1] 
gremlin> g.V().has("name","marko").as('a').outE().inV().as('b').select('a','b') 
==>[a:v[1],b:v[3]] 
==>[a:v[1],b:v[2]] 
==>[a:v[1],b:v[4]] 

、後者のようにそれは広範な適用性を有する一般的な一種のステップなので。

関連する問題