1

私のシナリオは、1 つのクエリで頂点間に複数のエッジを追加することです。

以下のノードを想定してください: これらは私が持っているラベルと ID です

ユーザー:

4100

:

4200

4355

4676

これらの頂点間にエッジを確立する必要があります

4100 --> 4200, 
4100 --> 4355, 
4100 --> 4676.

通常、ノード間に単一のエッジを作成することで実行できます。一度に 50 を超える頂点間にエッジを作成する場合、効率的な方法ではありません。ティンカーポップを使用しています3.0.1

4

4 に答える 4

8

最新のTinkerpopを使用。次のことができます。

サンプル グラフを作成します。

gremlin> graph = TinkerGraph.open();
gremlin> graph.addVertex("User").property("id", 4100);
==>vp[id->4100]
gremlin> graph.addVertex("Song").property("id", 4200);
==>vp[id->4200]
gremlin> graph.addVertex("Song").property("id", 4355);
==>vp[id->4355]
gremlin> graph.addVertex("Song").property("id", 4676);
==>vp[id->4676]

ここで、1 回のトラバーサルでエッジを追加します。

gremlin> graph.traversal().V().hasLabel("User").as("a").
         V().hasLabel("Song").
         addE("edge to song").from("a");
==>e[8][0-edge to song->2]
==>e[9][0-edge to song->4]
==>e[10][0-edge to song->6]

これaddEは、トラバーサル内で副作用として使用する別の例を示しています。

于 2016-07-04T14:21:52.197 に答える
2

頂点 ID がある場合は、ID で検索すると非常に効率的です。Gremlin Server を使用している場合、Gremlin Server への各リクエストは単一のトランザクションとして扱われます。複数のリクエストを送信するのではなく、1 つのリクエスト (バインディングを使用) で Gremlin クエリに複数のステートメントを渡すことができます。Gremlin クエリのステートメントはセミコロンで区切ります。

l=[4200, 4355, 4676]; v=graph.vertices(4100).next(); l.each { v.addEdge("knows", graph.vertices(it).next()) }
于 2016-07-04T14:21:11.130 に答える
-1

これを試して

gremlin> songs = g.V().has("album","albumname")).toList();user = g.V().has('fullName','arunkumar').next(); songs.each{user.addEdge("in",it)} 

gremlin> g.E() //check the edge

お役に立てれば :)

于 2016-07-05T10:27:14.957 に答える