AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

ドキュメントの挿入

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

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

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

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

重要

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

このガイドでは、プロジェクト Reactive ライブラリを使用して、 Java Reactive Streams ドライバー メソッドによって返された Publisher インスタンスを消費します。Project Reactive ライブラリとその使用方法の詳細については、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 の詳細については、 Project React ドキュメントのMongoDBを参照してください。

次の例では、 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 の詳細については、 Project React ドキュメントのMongoDBを参照してください。

次の例では、 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)

Trueに設定すると、書込み (write) がドキュメントレベルの検証をオプトアウトできるようになります。デフォルトは
Falseです。

toString()

使用すると、 はオブジェクトの string 表現を返します。

comment(BsonValue comment)

操作に添付するコメント。 詳細については、MongoDB Server マニュアルの 「挿入コマンド フィールドのガイド」 を参照してください。

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

方式
説明

ordered(Boolean ordered)

Trueに設定すると、ドライバーは指定された順序でドキュメントをサーバーに送信します。エラーが発生した場合、ドライバーとサーバーは残りの挿入操作をすべてキャンセルします。デフォルトは
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 ドライバーを使用してドキュメントを挿入する実行可能なコード例については、 CRUD操作ガイド を参照してください。

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