AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
MongoDB Branding Shape
Click here >
Docs Menu

ドキュメントの挿入

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

挿入操作は 、1 つ以上の ドキュメント をMongoDBコレクションに挿入します。 挿入操作を実行するには、 insert_one()メソッドを使用して単一のドキュメントを挿入し、 insert_many()メソッドを使用して 1 つ以上のドキュメントを挿入します。

このガイドの例では、 Atlasサンプルデータセットsample_restaurants.restaurantsコレクションを使用します。 C++アプリケーションからこのコレクションにアクセスするには、Atlasclient クラスターに接続する をインスタンス化し、 変数と 変数に次の値を割り当てます。dbcollection

auto db = client["sample_restaurants"];
auto collection = db["restaurants"];

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

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

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

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

  • ドライバーを使用して、各ドキュメント_idに対して一意のObjectId値を自動的に生成できます。

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

注意

重複した_id値はユニークインデックス制約に違反するため、ドライバーはmongocxx::bulk_write_exceptionエラーを返します。

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

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

MongoDB コレクションに単一のドキュメントを追加するには、 insert_one()メソッドを呼び出して、追加するドキュメントを渡します。

次の例では、 restaurantsコレクションにドキュメントを挿入します。

auto result = collection.insert_one(make_document(kvp("name", "Mongo's Burgers")));

MongoDBコレクションに複数のドキュメントを追加するには 、 insert_many()メソッドを呼び出し、追加するドキュメントを保存するベクトルを渡します。

次の例では、 restaurantsコレクションに 2 つのドキュメントを挿入しています。

std::vector<bsoncxx::document::value> restaurants;
restaurants.push_back(make_document(kvp("name", "Mongo's Burgers")));
restaurants.push_back(make_document(kvp("name", "Mongo's Pizza")));
auto result = collection.insert_many(restaurants);

mongocxx::options::insertクラスのインスタンスを任意のパラメータとして渡すことで、 insert_one()メソッドとinsert_many()メソッドの動作を変更できます。 次の表では、 mongocxx::options::insertインスタンスに設定できるフィールドを説明しています。

フィールド
説明

bypass_document_validation

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

write_concern

操作の書込み保証 (write
concern)を設定します。デフォルトは、名前空間の書込み保証 (write
concern)です。タイプ:mongocxx::write_concern

ordered

trueに設定されている場合、挿入が 1 回失敗すると、この操作ドキュメントの挿入が停止されます。false の場合、1 つの挿入が失敗しても、操作は残りのドキュメントの挿入を続行します。デフォルトは
true
です。タイプ:bool

comment

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

次のコードでは、 insert_many()メソッドを使用して、3 つの新しいドキュメントをコレクションに挿入します。 mongocxx::options::insertインスタンスではbypass_document_validationフィールドがtrueに設定されているため、この挿入操作はドキュメントレベルの検証をバイパスします。

std::vector<bsoncxx::document::value> docs;
docs.push_back(make_document(kvp("name", "Mongo's Burgers")));
docs.push_back(make_document(kvp("name", "Mongo's Pizza")));
docs.push_back(make_document(kvp("name", "Mongo's Tacos")));
mongocxx::options::insert opts;
opts.bypass_document_validation(true);
auto result = collection.insert_many(docs, opts);

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

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