.NET を使用して MongoDB データベースを管理する

適用対象: MongoDB

Azure Cosmos DB の MongoDB サーバーは、MongoDB NuGet パッケージから入手できます。

注意

コード スニペットの例は、.NET プロジェクトとしてGitHub 上で使用できます。

MongoDB 用 API リファレンス ドキュメント | MongoDB パッケージ (NuGet)

データベースに名前を付ける

Azure Cosmos DB では、データベースは名前空間に似ています。 データベースを作成すると、データベース名は、データベース リソースと子リソースへのアクセスに使用される URI のセグメントを形成します。

データベースに名前を付ける場合の簡単な規則を次に示します。

  • データベース名は 3 から 63 文字までの長さにする必要があります。
  • データベース名には、小文字、数字、ダッシュ文字のみを含めることができます。
  • データベース名は小文字または数字で始まる必要があります

作成されると、データベースの URI の形式は次のとおりです。

https://<cosmos-account-name>.documents.azure.com/dbs/<database-name>

データベース インスタンスを作成する

MongoClient を使用して、データベースのインスタンスを取得するか、まだ存在しない場合は作成することができます。 MongoDatabase クラスは、コレクションとそのドキュメントへのアクセスを提供します。

次のコード スニペットでは、ドキュメントをコレクションに挿入して新しいデータベースを作成します。 このような操作のために必要になるまで、データベースは作成されないことに注意してください。

var client = new MongoClient(Environment.GetEnvironmentVariable("MONGO_CONNECTION"));

client.GetDatabase("adventureworks").GetCollection<BsonDocument>("products").InsertOne(new BsonDocument() { { "Name", "surfboard" } });

既存のデータベースを取得する

GetDatabase メソッドを使用して既存のデータベースを名前で取得し、そのコレクションとドキュメントにアクセスすることもできます。

var collections = client.GetDatabase("adventureworks").ListCollectionNames();
Console.WriteLine($"The database has {collections.ToList().Count} collection.");

すべてのデータベースの一覧を取得する

MongoClient を使用して、サーバー上のすべてのデータベースの一覧を取得できます。

var dbFindList = client.ListDatabaseNames().ToList();

これ以降、この手法を使用して、データベースが既に存在するかどうかを確認できます。

var dbFound = dbFindList.FirstOrDefault(x => x == "adventureworks");
if (dbFound is not null)
{
    Console.WriteLine($"{dbFound} database found");
}
else
{
    Console.WriteLine($"{dbFound} database not found.");
}

データベースの削除

サーバーからデータベースを削除するには、DB クラスの DropDatabase メソッドを使います。

client.DropDatabase("adventureworks");

関連項目