.NET を使用して Azure Cosmos DB for MongoDB を使ってみる
適用対象: MongoDB
この記事では、.NET Core と関連する NuGet パッケージを使って Azure Cosmos DB for MongoDB に接続する方法について説明します。 接続すると、データベース、コレクション、ドキュメントに対する操作を実行できます。
注意
コード スニペットの例は、.NET Core プロジェクトとして GitHub 上で使用できます。
MongoDB 用 API リファレンス ドキュメント | MongoDB パッケージ (NuGet)
前提条件
- アクティブなサブスクリプションが含まれる Azure アカウント。 無料でアカウントを作成できます。
- .NET 6.0
- Azure コマンド ライン インターフェイス (CLI) または Azure PowerShell
- Azure Cosmos DB for MongoDB のリソース
新しい .NET Core アプリを作成する
任意のターミナルを使用して、空のフォルダーに新しい .NET Core アプリケーションを作成します。 このシナリオでは、コンソール アプリケーションを使用します。
dotnet new
コマンドを使って、コンソール アプリを作成し、名前を付けます。dotnet new console -o app
MongoDB NuGet パッケージをコンソール プロジェクトに追加します。 NuGet パッケージの名前を指定する
dotnet add package
コマンドを使用します。dotnet add package MongoDB.Driver
アプリを実行するには、ターミナルを使用してアプリケーション ディレクトリに移動し、アプリケーションを実行します。
dotnet run
MongoDB ネイティブ ドライバーを使って Azure Cosmos DB for MongoDB に接続する
MongoDB ネイティブ ドライバーを使って Azure Cosmos DB に接続するには、MongoClient
クラスのインスタンスを作成します。 このクラスは、MongoDB データベースに対するすべての操作を実行するための開始点です。 最も一般的な MongoClient のコンストラクターは接続文字列を受け取りますが、これは次の手順を使って取得できます。
リソースの名前を取得する
resourceGroupName のシェル変数を作成します。
# Variable for resource group name resourceGroupName="msdocs-cosmos"
az cosmosdb list
コマンドを使用して、リソース グループ内の最初の Azure Cosmos DB アカウントの名前を取得し、それを accountName シェル変数に格納します。# Retrieve most recently created account name accountName=$( az cosmosdb list \ --resource-group $resourceGroupName \ --query "[0].name" \ --output tsv )
接続文字列の取得
az cosmosdb keys list
コマンドを使って、アカウントの接続文字列の一覧から MongoDB 用 API の接続文字列を見つけます。az cosmosdb keys list --type connection-strings \ --resource-group $resourceGroupName \ --name $accountName
"主キー" の値を記録します。 これらの資格情報は後で使用します。
環境変数を構成する
コード内で接続文字列の値を使用するには、アプリケーションを実行しているローカル環境でこの値を設定します。 環境変数を設定するには、任意のターミナルを使用して次のコマンドを実行します。
$env:COSMOS_CONNECTION_STRING = "<cosmos-connection-string>"
接続文字列を使用して MongoClient を作成する
コンストラクターと、以前に設定した接続文字列変数を使って MongoClient
クラスの新しいインスタンスを定義します。
// New instance of CosmosClient class
var client = new MongoClient(Environment.GetEnvironmentVariable("COSMOS_CONNECTION_STRING"));
var settings = client.Settings;
Console.WriteLine(settings.Server.Host);
MongoDB 用 API 用の Azure Cosmos DB で MongoDB クライアント クラスを使う
アプリケーションのビルドを開始する前に、Azure Cosmos DB のリソースの階層について説明します。 Azure Cosmos DB には、リソースの作成とアクセスに使用される特定のオブジェクト モデルがあります。 Azure Cosmos DB によって、アカウント、データベース、コレクション、ドキュメントで構成される階層内にリソースが作成されます。
上部に Azure Cosmos DB の DB アカウントを示す階層図。 アカウントには 2 つの子データベース ノードがあります。 一方のデータベース ノードには、2 つの子コレクション ノードが含まれています。 もう一方のデータベース ノードには、1 つの子コレクション ノードが含まれています。 その 1 つのコレクション ノードには、3 つの子ドキュメント ノードがあります。
各種類のリソースは、1 つまたは複数の関連付けられた C# クラスによって表されます。 以下に最も一般的なクラスの一覧を示します。
クラス | 説明 |
---|---|
MongoClient |
このクラスは、Azure Cosmos DB での MongoDB 用 API レイヤーに対するクライアント側の論理表現を提供します。 このクライアント オブジェクトは、サービスに対する要求の構成と実行に使用されます。 |
MongoDatabase |
このクラスは、サービスにまだ存在する場合と存在しない場合があるデータベースへの参照です。 データベースは、それに対する操作の実行を試みると、サーバー側で検証または作成されます。 |
Collection |
このクラスは、まだサービスに存在しない可能性があるコレクションへの参照です。 コレクションは、操作しようとすると、サーバー側で検証されます。 |
次のガイドでは、これらの各クラスを使ってアプリケーションをビルドしてデータを管理する方法を示します。
ガイド:
関連項目
次のステップ
MongoDB 用 API アカウントに接続したので、次のガイドを使用してデータベースを作成および管理します。