Docs Menu
Docs Home
/ / /
Node.js ドライバー
/ /

レプリカセットでの CRUD 操作の実行方法の指定

項目一覧

  • Overview
  • 書込み保証 (write concern)
  • 例: 単一の書込み操作の書込み保証 (write concern) の設定
  • 例: 既存の書込み保証 (write concern) を取得して適用
  • 読み取り保証(read concern)
  • 例: 集計の読み取り保証レベルの設定
  • 例: データベースの読み取り保証を変更する
  • 読み込み設定 (read preference)
  • 例: トランザクションの読み込み設定(read preference)と保証の設定
  • 例: 接続stringでクラスターの読み込み設定(read preference)を設定する
  • API ドキュメント

このガイドでは、 書込み保証( write concern ) 、 読み取り保証( read concern ) 、 読み込み設定( read preference ) の構成を使用して、MongoDB がレプリカセットに対して作成、読み取り、アップデート、削除(CRUD)操作を実行する方法を変更する方法を説明します。

次のレベルで、書込み保証、読み取り保証、読み込み設定(read preference)のオプションを設定できます。

  • クライアント(オーバーライドされない限り、すべての操作実行にデフォルトを設定します)

  • セッション

  • トランザクション

  • Database

  • コレクション

このリストは、オプション設定の優先順位の増加順も示しています。 たとえば、トランザクションに読み取り保証 (read concern) レベルを設定すると、クライアントに設定された読み取り保証 (read concern) レベルが上書きされます。

これらのオプションを使用すると、レプリカセット内のデータの因果整合性と可用性をカスタマイズできます。

書込み保証 (write concern) は、挿入や更新などの書込み (write) 操作について MongoDB から要求される確認応答のレベルを指定します。その後、操作は正常に返されます。 明示的な書込み保証(write concern)を指定しない操作は、グローバルなデフォルトの書込み保証(write concern)設定を継承します。

詳細については、サーバー マニュアルの 書込み保証 (write concern) を参照してください。詳細なAPIドキュメントについては、 WriteConcern APIドキュメント を参照してください。

次の表では、 WriteConcernパラメータについて説明しています。

Parameter
タイプ
説明
w (任意)
指定された数のmongodインスタンスまたは指定されたタグを持つmongodインスタンスに、書込み (write) 操作が反映されたことの確認応答を要求します。
wtimeoutMS (任意)
数値
書込み (write) 操作が無期限にブロックされないように時間制限を指定します
journal (任意)
ブール値
書き込み操作がオンディスクのジャーナルに書き込まれたことの確認を要求する

このコードは、ドキュメントの新しい作成時にカスタムWriteConcern設定を使用します。

myDB.myCollection.insertOne(
{ name: "anotherDocumentName" },
{ writeConcern:
{ w: 2, wtimeoutMS: 5000 }
}
);

このコードでは、 fromOptions()メソッドを使用して、既存のデータベース参照myDBのオプションからWriteConcernを構築します。 myDBは、書込み保証オプションを受け入れる任意のエンティティへの参照に置き換えることができることに注意してください。 次に、新しい書込み保証(write concern)がドキュメントmyDocに適用されます。

const newWriteConcern = WriteConcern.fromOptions(myDB);
const myDoc = { name: "New Document" };
WriteConcern.apply(myDoc,newWriteConcern);

読み取り保証 (read concern) は、次の動作を指定します。

読み取り保証 (read concern) 設定は、 levelパラメータを使用して指定できます。 デフォルトの読み取り保証 (read concern) レベルはlocalです。 つまり、クライアントは接続先のレプリカセット メンバーからデータを返しますが、そのデータがすべてのレプリカセット メンバーに書き込まれた保証はありません。 読み取り保証 (read concern) レベル 要件を低くすると、レイテンシが削減される可能性があることに注意してください。

読み取り保証 (read concern) または読み取り保証 (read concern) レベルの詳細については、サーバー マニュアルの「読み取り保証(read concern) 」を参照してください。 ReadConcernのタイプと読み取り保証(read concern)レベルの定義の詳細については、「 ReadConcern 」を参照してください API ドキュメントを参照してください。

このコードでは、集計の読み取り保証レベルを"majority"に設定します。

const pipeline = [
{"$match": {
category: "KITCHENWARE",
}},
{"$unset": [
"_id",
"category",
]}
];
result = await myDB.collection("mycollection")
.aggregate(
pipeline,
{ readConcern:
{ level: "available" }
}
);

集計の詳細については、 集計ページをご覧ください。

次のコードは、データベースの読み取り保証(read concern)レベルを"local"に変更します。

const options = { readConcern: { level: "local" } };
const myDB = client.db("mydb", options);

読み込み設定 (read preference) は、クエリの実行時に MongoDB がレプリカセットのどのノードを読み込むかを決定します。 サーバーがメンバーを評価する方法をカスタマイズすることもできます。

API詳しくは、 ReadPreference ドキュメントAPI 参照してください。

以下の表では、 ReadPreferenceパラメータを説明しています。

Parameter
タイプ
説明
mode
サーバーが読み取りを行うレプリカセット メンバーの要件または設定を指定します。 デフォルト モード、 primaryでは、レプリカセットのプライマリ メンバーから操作によって読み取りが行われることを指定します。
tags (任意)
セカンダリ レプリカセット ノードにタグを割り当てて、サーバーによる評価方法をカスタマイズします。 primary読み込み設定(read preference)モード設定では、タグは使用できません。
options (任意)
読み込み設定(read preference)に適用できるヘッジmaxStalenessSecondsなどのさまざまなオプションを設定します。

このコードは、トランザクション内の操作の読み込み設定(read preference)、読み取り保証(read concern)、書込み保証(write concern)を設定します。

const transactionOptions = {
readPreference: "primary",
readConcern: { level: "local" },
writeConcern: { w: "majority" },
};
const session = client.startSession();
session.startTransaction(transactionOptions);
// ...
await session.commitTransaction();
await session.endSession();

トランザクションの詳細については、「トランザクション 」を参照してください。

このコード例では、クラスターでクエリを実行するときに「セカンダリ」の読み込み設定(read preference)モードを使用する MongoClient を作成します。

const uri = "mongodb+srv://<user>:<password>@<cluster-url>?readPreference=secondary&maxStalenessSeconds=120";
const client = new MongoClient(uri);

この例では、 maxStalenessSecondsオプションも設定しています。 接続stringオプションの詳細については、マニュアルの「接続stringオプション 」セクションを参照してください。

このガイドで言及されているメソッドとタイプの詳細については、次のAPIドキュメントを参照してください。

戻る

複合演算子