2016-05-03 14 views
0

私はtitan db(cassandraとesバックエンド)で遊んでいます。私はgremlinサーバーにgremlin-javascriptモジュール経由でnodejsのクエリを送信しています。私はtitanでgetOrInsert頂点を書くことができましたgraph.traversal().V().has(idKey,idVal).tryNext().orElseGet{ graph.addVertex(T.label,"product","product_id",991);graph.tx().commit();gremlinサーバーでエッジを追加するクエリ

しかし、私が直面している問題は、どのように2つの頂点間にエッジを追加するべきかということです。一般的に私たちがグレムリンにやっていることは、それは私が私として(それが2.0をサポートしています)GREXモジュールを使用することはできませんよ

// JavaScript 
var query = gremlin(); 
var bob = query.var(g.addVertex({ name: 'Bob' })); 
var alice = query.var(g.addVertex({ name: 'Alice' })); 
query(g.addEdge(bob, alice, 'likes', { since: 'now' })); 

をサポートしていて便利ですGREXモジュールがあることを私が発見した

a=graph.traversal().addVertex(...some properties); 
b=graph.traversal().addVertex(...some properties); 
a.addEdge("someEdgeType",b); 

ですgremlin 3.0.1を使用していて、書き込みクエリのフォーマットが変更されています(私は思う!)。

私の用途:リモートgremlinサーバーにgremlinクエリを送信できるはずです。

他のgrexのようなモジュールが存在しているため、クエリーの作成が簡単にできますか? gremlinサーバーを検索してエッジを作成する方法はありますか?

+1

試しくださいHTTPSを://www.npmjs.com/package/gremlin for JS for Titan 1.0/TinkerPop 3.0.1 –

+0

ありがとうございました。同じモジュールを使用しています。 (245764248).next()。addEdge( "somerelation"、gV(245764248).next())。tx()。commit(); ''リレーションが作成されたがコミットされていません。理由を理解できません。 –

答えて

4

まず、graph.traversal()を実行することは、従うべき良いパターンではありません。一度ごGraphTraversalSourceを作成し、それを再利用:

問題については
gremlin> graph = TinkerGraph.open() 
==>tinkergraph[vertices:0 edges:0] 
gremlin> g = graph.traversal() 
==>graphtraversalsource[tinkergraph[vertices:0 edges:0], standard] 

は、コードのあなたの「getOrInsert」行がVertex返すので、ちょうどあなたのEdge作成するために使用します。

gremlin> v1 = g.V().has('k',1).tryNext().orElseGet{graph.addVertex('k',1)} 
==>v[0] 
gremlin> v1.addEdge('self',v1) 
==>e[2][0-self->0] 
+0

ありがとうございますStephen.Myグラフは、gremlin-server.yaml経由でgremlin-serverで初期化されています.JavaScript-Gremlinモジュール経由でgremlinサーバーにクエリを送信しています。これは文字列クエリをサポートしています。ですから、私が呼び出すたびにgraph.traversal()を呼び出さなければなりません(もし私がここに何かを見つけていなければ)。 –

+1

'g'やyaml設定ファイルの中であなたの名前を指定したものは、初期化時にすでにGremlin Serverにバインドされているはずです。あなたのスクリプトで 'graph.traversal()'を呼び出す必要はありません。 –

+0

ありがとう、本当に正しいです。私は、グラフがStandardTitanGraphにバインドされており、gがgraph.traversal()にバインドされていることを確認しました。 gremlin-server.yamlのグラフ:{グラフ:conf/titan-cassandra-es.properties}。しかし、私の質問の一部は依然としてg.V(81924272).addEdge( "buy"、g.V(163844256))のような何かをしなければなりません。 81924272 =カスタマー頂点ID&163844256 =製品頂点ID –

関連する問題