Docs Menu
Docs Home
/ / /
Java Reactive Streams ドライバー
/

ドキュメントの置換

項目一覧

  • Overview
  • サンプル データ
  • 置換操作
  • 必要なパラメーター
  • 置き換えの例
  • 置換動作を変更する
  • 変更置換の例
  • 戻り値
  • 詳細情報
  • API ドキュメント

このガイドでは、 Java Reactive Streams ドライバーを使用して、置換操作を実行し、 MongoDBコレクション内のドキュメントを置き換える方法を学習します。

置換操作は、 MongoDBコレクション内の 1 つのドキュメントを、指定した新しいフィールドと値に置き換えます。 置換操作を実行するには、 replaceOne()メソッドを使用します。

このガイドの例では、 Atlasサンプルデータセットsample_restaurants.restaurantsコレクションを使用します。

無料のMongoDB Atlasクラスターを作成し、サンプルデータセットをロードする方法については、「 を使い始める 」チュートリアルを参照してください。

重要

プロジェクトリ アクター ライブラリ

このガイドでは、プロジェクト Reactive ライブラリを使用して、 Java Reactive Streams ドライバー メソッドによって返されたPublisherインスタンスを消費します。 Project Reactive ライブラリとその使用方法の詳細については、「 使用 開始 」を 参照してください。 (Reactor ドキュメントの参照)。このガイドでは Project React ライブラリ メソッドをどのように使用しているかについて詳しくは、「 MongoDBへのデータの書込み」ガイドを参照してください。

置換操作は、 MongoCollectionインスタンスでreplaceOne()メソッドを使用して実行できます。 このメソッドは、検索条件に一致する最初のドキュメントから_idフィールドを除くすべてのフィールドを削除し、指定したフィールドと値を空のドキュメントに追加します。

replaceOne() メソッドには次のパラメーターが必要です。

  • クエリフィルタードキュメント。置き換えるドキュメントを決定します。

クエリフィルターの詳細については、 「クエリの指定」ガイドを 参照してください 。

  • 新しいドキュメントに挿入するフィールドと値を指定するドキュメントを置き換えます。

MongoDBコレクション内の単一のドキュメントを置き換えるには、 replaceOne()メソッドを呼び出し、クエリフィルタードキュメントと置換ドキュメントをパラメーターとして渡します。 次に、 replaceOne()の結果をMonoから静的Mono.from()メソッドに渡します。 Monoは、プロジェクト Reactor ライブラリのクラスです。 Java Reactive Streams では、ドライバー メソッドはコールドPublisherインスタンスを返します。つまり、返されたPublisherをサブスクライブしないと、対応する操作は実行されません。 このガイドでは、Project Reactor ライブラリを使用してそれらを消費します。 Monoの詳細については、 MongoDB を参照してください プロジェクト React のドキュメントを参照してください。

次の例では、 replaceOne()メソッドを使用して、ドキュメントのフィールドと値をnameフィールド値"Pizza Town"に置き換えます。 replaceOne()メソッドは、元のドキュメントを、 nameフィールド値が"Mongo's Pizza"でかつcuisineフィールド値が"Pizza"であるドキュメントに置き換えます。

Publisher<UpdateResult> replacePublisher = restaurants.replaceOne(
eq("name", "Pizza Town"),
new Document().append("name", "Mongo's Pizza")
.append("cuisine", "Pizza"));
Mono.from(replacePublisher).block();

オプションで、オプション メソッドを呼び出して、 replaceOne()メソッドの動作を変更できます。 ReplaceOptionsクラスは、 replaceOne()メソッドの動作を変更するメソッドを提供します。 ReplaceOptionsクラスを使用するには、クラスの新しいインスタンスを構築し、そのメソッドの 1 つ以上を呼び出して 置換操作を変更します。 これらのメソッド呼び出しを連鎖させることができます。 置換操作の動作を変更するには、クラスインスタンスと連結されたメソッド呼び出しをreplaceOne()メソッドの最後の引数として渡します。

replaceOne()メソッドを変更するには、 ReplaceOptionsクラスの次のメソッドを使用します。

方式
説明
bypassDocumentValidation(Boolean bypass)
Specifies whether the replace operation bypasses document validation. This lets you update documents that don't meet the schema validation requirements, if any exist. For more information about schema validation, see Schema Validation in the MongoDB Server manual.
collation(Collation collation)
Specifies the kind of language collation to use when sorting results. For more information, see Collation in the MongoDB Server manual.
comment(BsonValue comment)
Attaches a BsonValue comment to the operation. For more information, see the insert command fields guide in the MongoDB Server manual.
comment(String comment)
Attaches a String comment to the operation. For more information, see the insert command fields guide in the MongoDB Server manual.
hint(Bson hint)
Sets the index for the operation as a Bson value. For more information, see the hint statement in the MongoDB Server manual.
hintString(String hint)
Sets the index for the operation as a String value. For more information, see the hint statement in the MongoDB Server manual.
let(Bson variables)
Specifies a map of parameter names and values. Values must be constant or closed expressions that don't reference document fields. For more information, see the let statement in the MongoDB Server manual.
upsert(Boolean upsert)
Specifies whether the replace operation performs an upsert operation if no documents match the query filter. For more information, see the upsert statement in the MongoDB Server manual.

次のコードでは、 replaceOne()メソッドを使用して、 restaurantsコレクション内のドキュメントを置き換えます。 また、クエリフィルターが既存のドキュメントと一致しない場合に、ドライバーが新しいドキュメントを挿入するようにupsert(true)オプションも設定します。

Publisher<UpdateResult> replacePublisher = restaurants.replaceOne(
eq("name", "Food Town"),
new Document().append("name", "Food World")
.append("cuisine", "Mixed"),
new ReplaceOptions().upsert(true));
Mono.from(replacePublisher).block();

replaceOne()メソッドはUpdateResultオブジェクトを返します。 対応する情報にアクセスするには、 UpdateResultタイプから次のメソッドを使用します。

プロパティ
説明
getMatchedCount()
The number of documents that matched the query filter, regardless of how many were replaced.
getModifiedCount()
The number of documents modified by the replace operation. If a replaced document is identical to the original, it is not included in this count.
getUpsertedId()
The ID of the document that was inserted into the database, if the driver performed an upsert. If no document was inserted, this value is null.
wasAcknowledged()
An acknowledgement of the replacement.

Java Reactive Streams ドライバーを使用してドキュメントを置き換える実行可能なコード例については、 「 MongoDBへのデータの書込み」ガイドを参照してください。

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

戻る

Update Documents