Docs Menu
Docs Home
/ / /
Rust ドライバー
/

データベースとコレクション

項目一覧

  • Overview
  • データベースへのアクセス
  • データベースを一覧表示する
  • データベースの削除
  • コレクションにアクセスする
  • コレクション パラメータ化
  • コレクションを作成する
  • listCollections
  • コレクションの削除
  • 詳細情報

このガイドでは、Rust ドライバーを使用して MongoDB のデータベースとコレクションにアクセスおよびコレクションを管理する方法を学習できます。

MongoDB では、データは階層構造で整理されています。 MongoDB 配置には 1 つ以上のデータベースが含まれ、各データベースには 1 つ以上のコレクションが含まれます。 各コレクションでは、MongoDB は、フィールドと値のペアを含むドキュメントとしてデータを保存します。

ドキュメント データ形式の詳細については、サーバー マニュアルのドキュメントを参照してください。

データベースにアクセスするには、 データベース を取得します クライアントからのインスタンス。 Databaseインスタンスを使用して、データベースレベルの操作を実行し、データベースに含まれるコレクションにアクセスできます。

クライアント で次のいずれかのメソッドを呼び出す インスタンスを使用してDatabase を作成します。

  • database() : 名前でデータベースを検索

  • database_with_options() : オプションを設定する( DatabaseOptions )を、名前でデータベースを検索する際

  • default_database() : インスタンスに指定されたデフォルトのデータベースにアクセスしますClient

Tip

クライアントのデフォルトのデータベースを指定するには、 ClientOptions構造体のdefault_databaseフィールドを設定します。 このフィールドを設定しない場合、ドライバーは 接続stringの defaultauthdb コンポーネントからデフォルトのデータベースを取得します。

存在しないデータベースの名前をdatabase()メソッドまたはdatabase_with_options()メソッドに渡すと、ドライバーは引き続きDatabaseインスタンスを返します。 このデータベースのコレクションにデータを挿入すると、サーバーによってデータが作成されます。

次の例では、 database()メソッドを使用してtest_dbというデータベースにアクセスします。

let db = client.database("test_db");

配置のデータベースの一覧を表示するには、 list_database_names() メソッドClient を インスタンスのメソッドを使用します。このメソッドは、データベース名を string として含むベクトル、 Vec<String>型を返します。

各データベースの詳細情報を表示するには、 list_databases() を呼び出しますClient インスタンスのメソッドを使用します。このメソッドはVec<DatabaseSpecification>型を返します。 データベース の仕様 タイプには、サイズやデータが含まれているかどうかなど、各データベースを説明するフィールドが含まれます。

次の例は、 list_database_names()メソッドを使用してデータベースのリストを出力する方法を示しています。

let db_list = client.list_database_names().await?;
println!("{:?}", db_list);

データベースを削除すると、そのデータベースのコレクション内のすべてのデータが永続的に削除されます。 データベースを削除するには、 drop() を呼び出しますDatabase インスタンスのメソッドを使用します。次のコードは、 db変数が参照するデータベースを削除する方法を示しています。

db.drop().await?;

警告

データベースの削除によるデータの削除

データベースを永続的に削除すると、データベースのコレクション内のすべてのドキュメントと、それらのコレクションのすべてのインデックスが永続的に削除されます。 データベースを削除した後は、そのデータにアクセスしたり、復元したりすることはできません。

コレクションを取得することで、 コレクション にアクセスできます データベースからのインスタンス。Collectionインスタンスを使用して、データ操作を実行し、集計を作成し、インデックスを管理できます。 Collectionを取得するには、 Databaseインスタンスで次のいずれかのメソッドを呼び出します。

存在しないコレクションの名前をcollection()またはcollection_with_options()メソッドに渡すと、ドライバーは引き続きCollectionインスタンスを返します。 このコレクションにデータを挿入すると、サーバーによってコレクションが作成されます。 コレクションを明示的に作成する方法については、このガイドの「 コレクションの作成 」セクションを参照してください。

この例では、 collection_with_options()メソッドを使用して次のアクションを実行しています。

  • db変数が参照するデータベースからcoll_xyzというコレクションにアクセスする

  • CollectionOptionsタイプのコレクションに書込み設定(write preference)を設定する

let wc = WriteConcern::builder().journal(true).build();
let coll_opts = CollectionOptions::builder().write_concern(wc).build();
let my_coll: Collection<Document> = db.collection_with_options("coll_xyz", coll_opts);

書込み保証 (write concern) の詳細については、サーバー マニュアルの「書込み保証(write concern) 」を参照してください。

コレクションのデータをシリアル化するデータ型を指定して、 Collectionインスタンスをパラメータ化する必要があります。 特定のタイプでパラメータ化されているCollectionインスタンスでメソッドを呼び出すと、メソッドはこのタイプのインスタンスを受け入れるか返します。

注意

Collectionインスタンスをパラメータ化しない場合、同じスコープ内で指定されたデータ型で CRUD 操作を実行すると、コンパイラーはジェネリック型を推測します。

次の例では、コレクションをDocument型でパラメータ化する同等の方法を示しています。

let my_coll: Collection<Document> = client.database("test_db").collection("coll_xyz");
let my_coll = client.database("test_db").collection::<Document>("coll_xyz");

Tip

Document型ではなく、データをモデル化するカスタムタイプでCollectionインスタンスをパラメータ化することをおすすめします。 特定のデータをモデル化する型を定義することで、繰り返しの直列化と検証を回避できます。

Rust ドライバーでの直列化の詳細については、「 データ モデリングと直列化に関するガイドを参照してください。

create_collection() Databaseメソッドを呼び出すと、明示的にコレクションを作成できます。 インスタンスのメソッドです。このメソッドは、コレクション名をパラメーターとして受け取ります。 Collectionインスタンスを使用して、データ操作を実行し、集計を作成し、インデックスを管理できます。

次のコードは、 db変数が参照するデータベース内にcoll_abcというコレクションを作成する方法を示しています。

db.create_collection("coll_abc").await?;

コレクションを作成する際に、スキーマ検証を実装して一貫したドキュメント スキーマを維持し、書込み (write) 操作が検証ルールをバイパスするかどうかを制御できます。 この機能を有効にする方法については、「スキーマ検証 」のガイドを参照してください。

データベース内のコレクションの名前を表示するには、 list_collection_names() メソッドDatabase を インスタンスのメソッドを使用します。このメソッドは、コレクション名を string として含むベクトル、 Vec<String>型を返します。

各コレクションの詳細情報を表示するには、 list_collections() メソッドDatabase を インスタンスのメソッドを使用します。このメソッドはVec<CollectionSpecification>型を返します。 コレクション の仕様 型には、型や設定などの各コレクションを説明するフィールドが含まれています。

次の例は、 list_collection_names()メソッドを使用して、 db変数が参照するデータベース内のコレクションの名前を出力する方法を示しています。

let coll_list = db.list_collection_names().await?;
println!("{:?}", coll_list);

コレクションを削除すると、そのコレクション内のすべてのデータが永続的に削除されます。 コレクションを削除するには、 drop() を呼び出しますCollection インスタンスのメソッドを使用します。次のコードは、 my_coll変数が参照するコレクションを削除する方法を示しています。

my_coll.drop().await?;

警告

コレクションを削除するとデータが削除されます

データベースからコレクションを削除すると、そのコレクション内のすべてのドキュメントとそのコレクションのすべてのインデックスが永続的に削除されます。 コレクションを削除した後は、そのデータにアクセスしたり、復元したりすることはできません。

このガイドの概念の詳細については、次のドキュメントを参照してください。

戻る

データモデリングと直列化