1
2

More than 1 year has passed since last update.

Gremlinのチートシート

Posted at

Gremlinはグラフデータベースを操作するためのプログラミング言語で、Apache TinkerPopの一部として開発されています。
以下に、Gremlinでよく使う基本的なコマンドとその説明をまとめました。

ノードとエッジの操作

ノードの追加

g.addV('label').property('key', 'value')

ラベルとプロパティを指定して新しいノード(頂点)を追加します。

ノードの検索

g.V().hasLabel('label')
g.V(vertexId)
g.V().has('key', 'value')

それぞれ、指定したラベル、ID、プロパティを持つノードを検索します。

プロパティの追加

g.V(vertexId).property('key', 'value')

ノードに新しいプロパティを追加します。

ノードの削除

g.V(vertexId).drop()

指定したノードを削除します。

エッジの追加

g.V(sourceId).addE('label').to(g.V(targetId)).property('key', 'value')

エッジ(辺)を追加します。ソースノードとターゲットノード、ラベルとプロパティを指定できます。

トラバーサル(探索)

隣接ノードの探索

g.V(vertexId).out('label')
g.V(vertexId).in('label')
g.V(vertexId).both('label')

それぞれ、指定したラベルのエッジを通じて接続された隣接ノードを探索します。

パスとサブグラフの表示

g.V(vertexId).out('label').path()
g.V(vertexId).repeat(out()).times(2)

ノードから出ているエッジを通じて探索したパスを表示したり、指定したノードから2ステップ先までの隣接ノードを探索します。

複雑なクエリの例

プロパティ値の取得

g.V().has('key', 'value').out('label').values('anotherKey')

特定のプロパティを持つノードから出ているエッジをたどり、その隣接ノードの別のプロパティの値を取得します。

2つのノードの選択

g.V().has('key', 'value').as('a').out('label').as('b').select('a', 'b')

特定のプロパティを持つノード(エイリアスa)から出ているエッジをたどって隣接ノード(エイリアスb)を見つけ、その2つのノードを一緒に選択します。

特定のプロパティを持つノードまでのパス表示

g.V().has('key', 'value').until(has('anotherKey', 'anotherValue')).repeat(out()).path()

指定したプロパティを持つノードからエッジを辿り続け、別の指定したプロパティを持つノードが見つかったところで探索を終了し、そのパスを表示します。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2