0

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

しかし、私が直面している問題は、2 つの頂点の間にエッジを追加する方法です。通常、gremlin で行うことは次のとおりです。

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

サポートするので役立つ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' }));

私はgremlin 3.0.1を使用しており、クエリを記述する形式が変更されているため(2.0をサポートしています)、grexモジュールを使用できません(私は思います!)。

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

クエリの作成を容易にするために、他の grex のようなモジュールが存在しますか? gremlin server にクエリを実行してエッジを作成するにはどうすればよいですか?

4

1 に答える 1

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]
于 2016-05-03T10:21:09.897 に答える