2017-05-24 8 views
0


私はGremlinにはとても新しいです。私はGremlinを使ってDSEグラフ上にグラフを構築しようとしています。Gremlin:同じプロパティを持つノード間にエッジを追加する

a = graph.addVertex(label, 'label1', 'key', 1) 
b = graph.addVertex(label, 'label1', 'key', 2) 
c = graph.addVertex(label, 'label2', 'key', 1) 
d = graph.addVertex(label, 'label2', 'key', 2) 

は、今私は、自動的にとCの間に貴様のプロパティ「キー」が一致(つまり、作成したラベルとエッジとの2つのノード間のエッジを追加するために探しています、aとbの間と:私は頂点を作成することができていますc)。私はそれをするためにしゃがんでいます。

私は、次の

g.V().hasLabel("label1").sideEffect{g.V().("label2").has("key",it.key).addEdge("link",it)} 

を実行しようとしました。しかし、私は次のエラーを取得しています:

No signature of method: org.apache.tinkerpop.gremlin.process.traversal.traverser.B_O_Traverser.values() is applicable for argument types: (java.lang.String) values: [key] 

は、誰かがこの問題で私を支援することはできますか? 事前にありがとう

答えて

3

入れ子g.V()さんは通常、悪い考えです。あなたは、単一のトラバーサルを使用して問題を解決することができます:

g.V().hasLabel("label1").as("a"). 
    V().hasLabel("label2").as("b"). 
    where("a", eq("b")).by("key"). 
    addE("link").from("a").to("b") 

はまた、あなたはDSEグラフでスキャンは、このトラバーサル作業を行うことができるようにする必要がありますので注意してください。

+0

ありがとうございました!それは正確に何が探していた、それは私の多くを助けた! – phaidara

関連する問題