10

私はGremlinが初めてで、基本的なグラフを作成しようとしています。新しい頂点で基本的な addEdge を実行できました。

gremlin> v1 = g.addVertex()
==>v[200004]
gremlin> v2 = g.addVertex()
==>v[200008]
gremlin> e = g.addEdge(v1, v2, 'edge label')
==>e[4c9f-Q1S-2F0LaTPQN8][200004-edge label->200008]

ID で検索された頂点間にエッジを作成することもできました。

gremlin> v1 = g.v(200004)
==>v[200004]
gremlin> v2 = g.v(200008)
==>v[200008]
gremlin> e = g.addEdge(v1, v2, 'edge label')
==>e[4c9f-Q1S-2F0LaTPQN8][200004-edge label->200008]

ただし、複数のプロパティに基づいて頂点を検索する必要があるため、注意が必要です。正しい頂点を調べるために、 を 2 回呼び出してい.hasます。正しい頂点が見つかったように見えますが、エッジの追加に失敗しています。

gremlin> v1 = g.V.has("x",5).has('y",7)
==>v[200004]
gremlin> v2 = g.V.has("x",3).has('y",5)
==>v[200008]

gremlin> e = g.addEdge(v1, v2, 'edge label')
No signature of method: groovy.lang.MissingMethodException.addEdge() is applicable for argument types: () values: []

プロパティ値のルックアップに基づいて、既存の 2 つの頂点間に単純なエッジを追加する最も簡単な方法は何ですか?

4

1 に答える 1

17

重要な問題はPipe.hasを返すことです: 特定の頂点インスタンスを取得するために、 への単純な呼び出しがトリックを行います:.next()

gremlin> v1 = g.V.has("x",5).has('y",7).next()
==>v[200004]
gremlin> v2 = g.V.has("x",3).has('y",5).next()
==>v[200008]

gremlin> e = g.addEdge(v1, v2, 'edge label')
==>e[4c9f-Q1S-2F0LaTPQN8][200004-edge label->200008]

.next()は単にパイプ内の次のアイテムを返すことに注意してください。この場合、プロパティ値に一致する追加の頂点は無視されます。

于 2013-06-14T21:41:07.987 に答える