チュートリアル: Gremlin を使用して Azure Cosmos DB for Gremlin のクエリを実行する

適用対象: Gremlin

Azure Cosmos DB の Gremlin 用 APIGremlin クエリをサポートしています。 この記事では、使用を開始できるようにサンプル ドキュメントとクエリを提供します。 詳しい Gremlin のリファレンスについては、Gremlin のサポートに関する記事を参照してください。

この記事に含まれるタスクは次のとおりです。

  • Gremlin を使用してデータのクエリを実行する

前提条件

クエリを実行するには、Azure Cosmos DB アカウントがあり、コンテナーにグラフ データがあることが必要です。 どちらもない場合には、 5 分でできるクイックスタートを実行して、アカウントを作成し、データベースにデータを設定します。 次のクエリを実行するには、Gremlin コンソール、またはお気に入りの Gremlin ドライバーを使用します。

グラフの頂点を数える

次のスニペットはグラフ内の頂点の数をカウントする方法を示しています。

g.V().count()

フィルター

Gremlin の has ステップと hasLabel ステップを使用してフィルターを実行できます。また、andornot を使用してそれらを組み合わせて複雑なフィルターを作成できます。 Azure Cosmos DB では、頂点と角度内のすべてのプロパティのインデックスをスキーマに依存せずに作成することができ、高速クエリを実現します。

g.V().hasLabel('person').has('age', gt(40))

Projection

values ステップを使用してクエリ結果の特定のプロパティを投影できます。

g.V().hasLabel('person').values('name')

ここまでは、どのデータベースでも使用できるクエリ操作のみを説明しました。 関連するエッジと頂点にナビゲートする必要がある場合、グラフではトラバーサル操作が高速かつ効率的です。 Thomas の友人をすべて探しましょう。 これには、 Gremlin の outE ステップを使用して Thomas のエッジ (外側) すべてを検索してから、Gremlin の inV ステップを使用してそれらのエッジの頂点 (内側) をトラバーサルします。

g.V('thomas').outE('knows').inV().hasLabel('person')

次のクエリは、outEinV を 2 回呼び出し、2 つのホップを実行して Thomas の "友人の友人" をすべて検索します。

g.V('thomas').outE('knows').inV().hasLabel('person').outE('knows').inV().hasLabel('person')

Gremlin を使用すると、さらに複雑なクエリを作成したり、強力なグラフ トラバーサル ロジックを実装したりできます。これには、フィルター式の組み合わせ、loop ステップを使用したループの実行、choose ステップを使用した条件付きナビゲーションの実装などが含まれます。 他にどのようなことができるかについて詳しくは、Gremlin のサポートに関する記事をご覧ください。

次のステップ

このチュートリアルでは、次の手順を行いました。

  • Graph を使用してクエリを実行する方法を学習しました。

これで、「概念」セクションに進み、Azure Cosmos DB の詳細について学習できるようになりました。