Overview
このガイドでは、 Java Reactive Streams ドライバーを使用して書込み保証 ( 書込み保証 (write concern)) を指定する方法を学習します。 書込み保証 は書き込み操作に対してMongoDBから要求される確認応答のレベルを表します。
書込み保証 (write concern) は、次のレベルで構成できます。
MongoDBデプロイの場合
データベース用
コレクション用
配置レベルでの書込み保証 (write concern) の構成
配置レベルで次の方法で書込み保証 ( 書込み保証 (write concern) ) を構成できます。
次のコードに示すように、
MongoClientSettingsインスタンスを作成します。MongoClient mongoClient = MongoClients.create(MongoClientSettings.builder() .applyConnectionString(new ConnectionString("mongodb://host1,host2")) .writeConcern(WriteConcern.MAJORITY) .build()); 次のコードに示すように、
ConnectionStringインスタンスを作成します。MongoClient mongoClient = MongoClients.create("mongodb://host1:27017,host2:27017/?w=majority");
データベースまたはコレクションレベルでの書込み保証 (write concern) の構成
データベースまたはコレクションレベルで書込み保証 ( 書込み保証 (write concern) ) は、次の方法で構成できます。
次のコードに示すように、
withWriteConcern()メソッドを使用してMongoDatabaseで を実行します。MongoDatabase database = mongoClient.getDatabase("test").withWriteConcern(WriteConcern.MAJORITY); 次のコードに示すように、
withWriteConcern()メソッドを使用してMongoCollectionで を実行します。MongoCollection<Document> collection = database .getCollection("restaurants") .withWriteConcern(WriteConcern.MAJORITY);
MongoDatabase とMongoCollectionインスタンスは不変です。 既存のMongoDatabaseまたはMongoCollectionインスタンスでwithWriteConcern()を呼び出すと、新しい インスタンスが返されますが、メソッドが呼び出されるインスタンスには影響しません。
次の例では、 collWithWriteConcernインスタンスの書込み保証(write concern)はmajorityですが、 collectionの読み込み設定(read preference)は影響を受けません。
MongoCollection<Document> collWithWriteConcern = collection .withWriteConcern(WriteConcern.MAJORITY);
読み取り保証、読み込み設定 (read preference)、書込み保証 (write concern) の組み合わせ
MongoClientSettings 、 MongoDatabase 、またはMongoCollectionインスタンスをビルドすると、読み取り保証、読み込み設定(read preference)、書込み保証(write concern)の組み合わせを含めることができます。
たとえば、次のコードでは、コレクション レベルで 3 つすべてを設定します。
Collection = database.getCollection("restaurants") .withReadPreference(ReadPreference.primary()) .withReadConcern(ReadConcern.MAJORITY) .withWriteConcern(WriteConcern.MAJORITY);
詳細情報
書込み保証(write concern)の詳細については、 MongoDB Serverマニュアルの書込み保証(write concern)ガイドを参照してください。