1

SQL の 'in' 句と同様に、別のクエリの結果のセットに含まれる値を持つすべてのノードを検索するグレムリン クエリを作成しようとしています。

例えば:

select * from myTable
where someVal in (select someVal from otherTable)

この質問はこの質問と重複している可能性がありますが、 IN 句の値は静的リストではなくクエリの動的結果であるため、グラフの線形スキャンを実行できないため、そこに示されている回答は私には当てはまりません。

4

1 に答える 1

2

keepを使用したいと思うでしょう。基本的に、最初のクエリの結果を保存し、それらをretainステップへの入力として使用して、一致するパイプラインを通過するアイテムが保持されるようにします。簡単な例:

gremlin> g = TinkerGraphFactory.createTinkerGraph()
==>tinkergraph[vertices:6 edges:6]
gremlin> firstResults = g.v(1).out.toList()
==>v[2]
==>v[4]
==>v[3]
gremlin> g.V.retain(firstResults)
==>v[3]
==>v[2]
==>v[4]

このretainステップは、次のものと組み合わせて使用​​されることがよくありaggregateます。

gremlin> x=[]
gremlin> g.v(1).out.aggregate(x).out.retain(x)
==>v[3]

または、名前付きステップを使用できます。

gremlin> g.v(1).out.as('x').out.retain(x)
==>v[3]

Gremlin へのその他の SQL 変換については、SQLToGremlin.comを参照してください。

于 2013-10-22T10:51:58.113 に答える