データベースとコレクション
項目一覧
Overview
このガイドでは、.NET/C# ドライバーを使用して MongoDB のデータベースとコレクションにアクセスおよび管理する方法を学習できます。
MongoDB では、データは階層構造で整理されています。 MongoDB 配置には 1 つ以上のデータベースが含まれ、各データベースには 1 つ以上のコレクションが含まれます。 各コレクションでは、MongoDB は、フィールドと値のペアを含むドキュメントとしてデータを保存します。
ドキュメント データ形式の詳細については、サーバー マニュアルのドキュメントを参照してください。
データベースへのアクセス
データベースにアクセスするには、 IMongoClient
インスタンスから IMongoDatabaseインスタンスを取得します。 返されたIMongoDatabase
インスタンスを使用して、データベースレベルの操作を実行し、データベースに含まれるコレクションにアクセスできます。
を作成するには、データベース名をパラメータとして渡して、 IMongoDatabase
IMongoClient インスタンスで GetDatabase() メソッドを呼び出します。また、任意のMongoDatabaseSettingsをパラメーターとして渡して、データベースへのアクセス方法をカスタマイズすることもできます。
存在しないデータベースの名前をGetDatabase()
メソッドに渡すと、ドライバーは引き続きIMongoDatabase
インスタンスを返します。 このデータベースのコレクションにデータを挿入すると、サーバーはその時点でデータベースとコレクションを作成します。
次の例では、クライアントを作成し、 GetDatabase()
メソッドを使用してtest_db
というデータベースにアクセスします。
var client = new MongoClient("<connection string>"); var myDB = mongoClient.GetDatabase("test_db");
データベースを一覧表示する
配置のデータベースの一覧を表示するには、 IMongoClient
インスタンスで非同期ListDatabaseNamesAsync()メソッドまたは同期ListDatabaseNames()メソッドを呼び出します。
各データベースの詳細情報を表示するには、 IMongoClient
インスタンスで非同期ListDatabasesAsync()メソッドまたは同期ListDatabases()メソッドを呼び出します。 これらのメソッドは、サイズやデータが含まれているかどうかなど、クラスター内のデータベースを説明するフィールドを返します。
次のコードは、非同期ListDatabaseNamesAsync()
メソッドまたは同期ListDatabaseNames()
メソッドを使用して、クラスター内のデータベースの名前を一覧表示する方法を示しています。
await mongoClient.ListDatabaseNamesAsync();
mongoClient.ListDatabaseNames();
データベースの削除
データベースを削除すると、そのデータベースのコレクション内のすべてのデータが永続的に削除されます。 データベースを削除するには、 IMongoClient
インスタンスで非同期のDropDatabaseAsync()メソッドまたは同期のDropDatabase()メソッドを呼び出して、データベース名をパラメータとして渡します。
次のコードは、非同期DropDatabaseAsync()
メソッドまたは同期DropDatabase()
メソッドを使用して、 test_db
というデータベースを削除する方法を示しています。
await mongoClient.DropDatabaseAsync("test_db");
mongoClient.DropDatabase("test_db");
警告
データベースの削除によるデータの削除
データベースを永続的に削除すると、データベースのコレクション内のすべてのドキュメントと、それらのコレクションのすべてのインデックスが永続的に削除されます。 データベースを削除した後は、そのデータにアクセスしたり、復元したりすることはできません。
コレクションにアクセスする
データベースからIMongoCollectionインスタンスを取得することで、コレクションにアクセスできます。 IMongoCollection
インスタンスを使用して、データ操作を実行し、集計を作成し、インデックスを管理できます。 IMongoCollection
を取得するには、 IMongoDatabase
インスタンスでGetCollection()メソッドを呼び出します。 任意のMongoCollectionSettingsをパラメーターとして渡して、コレクションへのアクセス方法をカスタマイズすることもできます。
存在しないコレクションの名前をこのメソッドに渡すと、ドライバーは引き続きIMongoCollection
インスタンスを返します。 このコレクションにデータを挿入すると、サーバーによってコレクションが作成されます。 コレクションを明示的に作成する方法については、このガイドの「 コレクションの作成 」セクションを参照してください。
この例では、 GetCollection()
メソッドを使用して、 myDB
変数が参照するデータベースからcoll_xyz
というコレクションにアクセスします。
var myColl = myDB.GetCollection<BsonDocument>("coll_xyz");
コレクション パラメータ化
コレクションのデータをシリアル化するデータ型を指定して、 IMongoCollection
インスタンスをパラメータ化する必要があります。 特定のタイプでパラメータ化されているIMongoCollection
インスタンスでメソッドを呼び出すと、メソッドはこのタイプのインスタンスを受け入れるか返します。
次の例は、 BsonDocument
型のコレクションをパラメータ化する方法を示しています。
var collection = database.GetCollection<BsonDocument>("coll_xyz", settings);
Tip
BsonDocument
型ではなく、データをモデル化するカスタムタイプでIMongoCollection
インスタンスをパラメータ化することをおすすめします。 特定のデータをモデル化する型を定義することで、繰り返しの直列化と検証を回避できます。
.NET/C# ドライバーで直列化の詳細については、「直列化 に関するガイド」を参照してください。
コレクションを作成する
IMongoDatabase
インスタンスで非同期のCreateCollectionAsync()メソッドまたは同期のCreateCollection()メソッドを呼び出すことで、コレクションを明示的に作成できます。
このメソッドは、コレクション名と任意のCreateCollectionOptions型をパラメーターとして受け取ります。 その後は作成されたコレクションにアクセスして、データ操作を実行し、集計を作成し、インデックスを管理できます。
次のコードは、非同期CreateCollectionAsync()
メソッドまたは同期CreateCollection()
メソッドを使用して、 myDB
変数が参照するデータベース内にcoll_abc
というコレクションを作成する方法を示しています。
await myDB.CreateCollectionAsync("coll_abc");
myDB.CreateCollection("coll_abc");
listCollections
データベース内のコレクションの一覧を表示するには、 IMongoDatabase
インスタンスで非同期ListCollectionNamesAsync()メソッドまたは同期ListCollectionNames()メソッドを呼び出します。
各データベースの詳細情報を表示するには、 IMongoDatabase
インスタンスで非同期ListCollectionsAsync()メソッドまたは同期ListCollections()メソッドを呼び出します。 これらのメソッドは、タイプや設定など、データベース内のコレクションを説明するフィールドを返します。
次のコードは、非同期ListCollectionNamesAsync()
メソッドまたは同期ListCollectionNames()
メソッドを使用して、データベース内のコレクションの名前を一覧表示する方法を示しています。
await myDB.ListCollectionNamesAsync();
myDB.ListCollectionNames();
コレクションの削除
コレクションを削除すると、そのコレクション内のすべてのデータが永続的に削除されます。 コレクションを削除するには、 IMongoCollection
インスタンスで非同期のDropCollectionAsync()メソッドまたは同期のDropCollection()メソッドを呼び出します。
次のコードは、非同期DropCollectionAsync()
メソッドまたは同期DropCollection()
メソッドを使用して、 coll_abc
というデータベースを削除する方法を示しています。
await myDB.DropCollectionAsync("coll_abc");
myDB.DropCollection("coll_abc");
警告
コレクションを削除するとデータが削除されます
データベースからコレクションを削除すると、そのコレクション内のすべてのドキュメントとそのコレクションのすべてのインデックスが永続的に削除されます。 コレクションを削除した後は、そのデータにアクセスしたり、復元したりすることはできません。
詳細情報
このガイドの概念の詳細については、次のドキュメントを参照してください。
ドキュメントの挿入ガイド
「データベースとコレクション」のサーバー マニュアル
サーバー マニュアルのドキュメント