2016-09-29 8 views
2

scala gremlinを使って頂点からすべての出て行くegdesのすべての頂点ラベルを取得する必要があります。頂点から全ての出て行く辺の頂点を得る方法scala gremlin

私のコードは次のように見え以下、全ての頂点 例:に同じラベル名を返す

val names :ListBuffer[String] = ListBuffer() 
val toList: List[Vertex] = graph.V().hasLabel(100).outE().outV().toList() 
for(vertex <- toList){ 
     names += vertex.label() 
    } 

その: 頂点AはB、C、DにOUTE持っています。 A. の出力を返します。出力:

ListBuffer(100, 100, 100) 

何もありません。

答えて

2

最後に間違った頂点を求めていると思います。正直なところ、私はしばしば同じミスをします。多分これはあなたが探してトラバーサルです:

graph.V().hasLabel(100).outE().inV().label().toList() 

あなたが私を好きで、しばしばinV()によって混乱しoutV()場合は、反対の頂点を取得otherVを使用することができます。

graph.V().hasLabel(100).out().label().toList() 

out()代わりのoutE()を使用することによって、あなたはあなたが欲しい指定する必要はありません。

graph.V().hasLabel(100).outE().otherV().label().toList() 

最後あなたも、明示的にエッジ部分を記述しないことによって、あなたのトラバーサルを短縮することができますので、同様頂点、out()は頂点を直接取得します。

+0

ありがとうございます。また、私は1つのドロップエッジに関連している。私のクエリはこのように見えます。 'graph.V()。hasLabel(100).otherV()。hasLabel(100).outE()。drop()'。私は2つの与えられた頂点の間のエッジを削除する必要があります。間違っているように見えます。 – Gopi

+0

'inE()'またはoutE()で明示的に辺を越えるように指定していないときは 'otherV()'を使うことはできません。あなたが探しているものは、 'graph.V()。hasLabel(100).outE()。drop()。iterate()'です。あなたは最後にそれを反復する必要があります。 –

+0

単一のクエリでエッジプロパティの値を取得することは可能ですか?指定された頂点のように、いくつかのプロパティ値を持つB、C、Dへのエッジがあります。もしVertex Aが与えられていれば、私はエッジプロパティの値と頂点ラベルをセットまたはマップに入れておく必要があります。 – Gopi

関連する問題