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

ドキュメントの挿入

項目一覧

  • Overview
  • サンプル データ
  • _id フィールド
  • 1つのドキュメントの挿入
  • 複数のドキュメントの挿入
  • 挿入動作の変更
  • 詳細情報
  • API ドキュメント

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

挿入操作は 、1 つ以上の ドキュメント をMongoDBコレクションに挿入します。 挿入操作は、 insertOne()またはinsertMany()メソッドを使用して実行できます。

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

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

重要

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

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

MongoDB コレクションでは、各ドキュメントに一意のフィールド値を持つ_idフィールドが含まれている必要があります。

MongoDB では、このフィールドは次の 2 つの方法で管理できます。

  • このフィールドは各ドキュメントに自分で設定することができ、各_idフィールド値が一意であることを確認します。

  • ドライバーを使用して、各ドキュメント_idに対して一意のObjectId値を自動的に生成できます。 ドキュメントの_id値を手動で設定しない場合、ドライバーは フィールドにObjectIdを入力します。

一意性を保証できない限り、ドライバーに_id値を自動的に生成させることをお勧めします。

注意

重複した_id値は一意のインデックス制約に違反するため、ドライバーはinsertOne() WriteErrorを、またはinsertMany() BulkWriteErrorを返します。

_idフィールドの詳細については、 マニュアルの 「 一意なインデックス 」MongoDB Server のガイドを参照してください。

ドキュメント構造とルールの詳細については、MongoDB Server マニュアルのドキュメントガイド を参照してください。

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

次の例では、 insertOne()メソッドを使用して、 nameの値が"Mongo's Burgers"であるドキュメントをrestaurantsコレクションに挿入します。

Document document = new Document("name", "Mongo's Burgers");
Publisher<InsertOneResult> insertPublisher = restaurants.insertOne(document);
Mono.from(insertPublisher).block();

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

次の例では、 insertMany()メソッドを使用してドキュメントのリストをrestaurantsコレクションに挿入します。

Document doc1 = new Document("name", "Mongo's Pizza");
Document doc2 = new Document("name", "Mongo's Coffee");
List<Document> documents = Arrays.asList(doc1, doc2);
Publisher<InsertManyResult> insertPublisher = restaurants.insertMany(documents);
Mono.from(insertPublisher).block();

InsertOneOptionsクラスには、 insertOne()メソッドの動作を変更するメソッドが含まれています。 InsertOneOptionsクラスを使用するには、クラスの新しいインスタンスを作成し、そのメソッドの 1 つ以上を呼び出して 挿入操作を変更します。 これらのメソッド呼び出しを連鎖させることができます。 挿入操作の動作を変更するには、クラスインスタンスと連鎖メソッド呼び出しをinsertOne()メソッドの 2 番目の引数として渡します。

InsertManyOptionsクラスを使用して、 insertMany()メソッドも同様に変更できます。

insertOne()メソッドを変更するには、 InsertOneOptionsクラスの次のメソッドを使用します。 すべてのメソッドは任意です。

方式
説明
bypassDocumentValidation (Boolean bypassDocumentValidation)
If set to True, allows the write to opt out of document-level validation.
Defaults to False.
toString()
If used, returns a string representation of the object.
comment(BsonValue comment)
A comment to attach to the operation. For more information, see the insert command fields guide in the MongoDB Server manual.

InsertManyOptionsクラスには、前のメソッドと次のordered()メソッドが含まれています。

方式
説明
ordered(Boolean ordered)
If set to True, the driver sends documents to the server in the order provided. If an error occurs, the driver and server cancel all remaining insert operations.
Defaults to True.

次のコードでは、 insertMany()メソッドを使用して新しいドキュメントをrestaurantsコレクションに挿入します。 また、ドキュメントレベルの検証をバイパスするには、 bypassDocumentValidation(true)オプションを設定します。

Document doc1 = new Document("name", "Mongo's Burgers");
Document doc2 = new Document("name", "Mongo's Pizza");
Document doc3 = new Document("name", "Mongo's Coffee");
List<Document> documents = Arrays.asList(doc1, doc2, doc3);
Publisher<InsertManyResult> insertPublisher =
restaurants.insertMany(documents,
new InsertManyOptions().bypassDocumentValidation(true));
Mono.from(insertPublisher).block();

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

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

戻る

Write Data