Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

CRUD操作の構成

このガイドでは、 Rustドライバー で読み取りおよび書込み操作を構成する方法を学習できます。

読み込み設定( read preference ) を設定することで、ドライバーが読み取り操作をルーティングする方法を制御できます。 また、読み取り保証 ( read concern ) と書込み保証 ( write concern ) を設定して、ドライバーがレプリカセットでの読み取りおよび書込み (write) 操作の確認を待機する方法のオプションも制御できます。

Clientデフォルトでは 、データベースは インスタンスからこれらの設定を継承し、コレクションはデータベースからこれらを継承します。ただし、 database_with_options() または collection_with_options() メソッドを使用して、データベースまたはコレクションのカスタム読み取りまたは書込み設定を設定できます。これらのメソッドは、指定された設定を持つ新しいDatabase またはCollection インスタンスを作成します。

読み取りまたは書込み設定を構成するには、ReadConcern、WriteConcern、または選択基準のインスタンスを作成し、それをオプション ビルダに渡します。

Tip

読み取りおよび書込み設定の詳細については、MongoDB Server マニュアルの次のガイドを参照してください。

次のセクションでは、クライアント、データベース、コレクションレベルで読み取りと書込みを設定する方法を示します。

この例では、 オブジェクトを Client::with_options() メソッドに渡すことで、 インスタンスの読み込み設定(読み込み設定 (read preference)、読み取り保証 (read concern))、書込み保証 (write concern)を設定する方法を示しています。このコードは、次の設定を構成します。ClientClientOptions

  • Secondary 読み込み設定 ( 読み込み設定 (read preference)) : 読み取り操作は セカンダリレプリカセットメンバーからデータを取得します

  • local 読み取り保証 (read concern)保証 : 読み取り操作は、インスタンスの最新データを返しますが、レプリカセットのノードの過半数にデータが書き込まれたことを保証します

  • Majority 書込み保証( 書込み保証 (write concern) ) : すべてのレプリカセットの過半数が書込み(write)操作を確認する必要があります

let read_preference = ReadPreference::Secondary {
options: Default::default(),
};
let selection_criteria = SelectionCriteria::ReadPreference(read_preference);
let read_concern = ReadConcern::local();
let write_concern = WriteConcern::builder().w(Acknowledgment::Majority).build();
let client_options = ClientOptions::builder()
.selection_criteria(selection_criteria)
.read_concern(read_concern)
.write_concern(write_concern)
.build();
let client = Client::with_options(client_options)?;

あるいは、次の例に示すように、接続 URI で読み取り設定と書込み設定を指定し、その URI を Client::with_uri_str() コンストラクターに渡すこともできます。

let uri = "<connection string>/?readPreference=secondary&readConcernLevel=local&w=majority";
let client = Client::with_uri_str(uri).await?;

この例では、 オブジェクトをtest_database DatabaseOptionsdatabase_with_options() メソッドに渡すことで、 という名前のデータベースの 読み込み設定(読み込み設定 (read preference)、読み取り保証 (read concern)) 、 書込み保証(書込み保証 (write concern) ) を設定する方法を示しています。このコードは、次の設定を構成します。

  • PrimaryPreferred 読み込み設定 ( 読み込み設定 (read preference)) : 読み取り操作は、プライマリレプリカセットメンバーからデータを取得します。プライマリが使用できない場合は セカンダリ メンバーからデータが取得されます

  • available 読み取り保証 (read concern)保証 : 読み取り操作は、インスタンスの最新データを返しますが、レプリカセットのノードの過半数にデータが書き込まれたことを保証します

  • majority 書込み保証( 書込み保証 (write concern) ) : すべてのレプリカセットの過半数が書込み(write)操作を確認する必要があります

let read_preference = ReadPreference::PrimaryPreferred {
options: Default::default(),
};
let selection_criteria = SelectionCriteria::ReadPreference(read_preference);
let read_concern = ReadConcern::available();
let write_concern = WriteConcern::majority();
let database_options = DatabaseOptions::builder()
.selection_criteria(selection_criteria)
.read_concern(read_concern)
.write_concern(write_concern)
.build();
let database = client.database_with_options("test_database", database_options);

この例では、 オブジェクトをtest_collection CollectionOptionscollection_with_options() メソッドに渡すことで、 という名前のコレクションの読み込み設定(読み込み設定 (read preference)、読み取り保証 (read concern))、書込み保証(書込み保証 (write concern) )を設定する方法を示しています。このコードは、次の設定を構成します。

  • SecondaryPreferred 読み込み設定 (read preference)) : 読み取り操作は、セカンダリレプリカセットメンバーからデータを取得します。セカンダリが使用できない場合は、プライマリ ノードからデータが取得されます。

  • available 読み取り保証 (read concern)保証 : 読み取り操作は、インスタンスの最新データを返しますが、レプリカセットのノードの過半数にデータが書き込まれたことを保証します

  • w: 0 書込み保証 (write concern):クライアントは書込み (write ) 操作の確認応答をリクエストしません。

let read_preference = ReadPreference::SecondaryPreferred {
options: Default::default(),
};
let selection_criteria = SelectionCriteria::ReadPreference(read_preference);
let read_concern = ReadConcern::available();
let write_concern = WriteConcern::builder().w(0.into()).build();
let collection_options = CollectionOptions::builder()
.selection_criteria(selection_criteria)
.read_concern(read_concern)
.write_concern(write_concern)
.build();
let collection = database.collection_with_options("test_collection", collection_options);

Rustドライバーは、ネットワークまたはサーバーのエラーにより失敗した場合、特定の読み取りおよび書き込み操作を 1 回自動的に再試行します。

ClientOptionsインスタンスを構築するときに、retry_reads または retry_writes オプションを false に設定することで、再試行可能な読み取りまたは再試行可能な書込みを明示的に無効にすることができます。次の例では、クライアントの再試行可能な読み取りと書込みを無効にします。

let client_options = ClientOptions::builder()
.retry_reads(false)
.retry_writes(false)
.build();
let client = Client::with_options(client_options)?;

サポートされている再試行可能な読み取り操作の詳細については、 MongoDB Serverマニュアルの「 再試行可能な読み取り 」を参照してください。サポートされている再試行可能な書込み操作の詳細については、 MongoDB Serverマニュアルの「 再試行可能な書込み 」を参照してください。

照合を指定して、読み取り操作と書込み操作の動作を変更できます。照合は、大文字と小文字やアクセント記号など、string を比較するための言語固有のルールのセットです。

照合の詳細とコード例については、「 照合ガイド 」を参照してください。

このガイドで説明したメソッドや型の詳細については、次の API ドキュメントを参照してください。

戻る

複合演算子

項目一覧