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

ドキュメントの挿入

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

挿入操作は、1 つ以上の ドキュメント をMongoDBコレクションに挿入します。 次の関数を使用して、挿入操作を実行できます。

  • mongoc_collection_insert_one() 単一のドキュメントを挿入する関数

  • mongoc_collection_insert_many() 1 つ以上のドキュメントを挿入する関数

このガイドの例では、Atlas のサンプルデータセットから、sample_restaurantsデータベースのrestaurantsコレクションを使用します。MongoDB Atlasクラスターを無料で作成して、サンプルデータセットをロードする方法については、 MongoDBを使い始めるガイド を参照してください 。

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

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

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

  • ドライバーがドキュメント_idフィールドごとに一意のbson_oid_t値を自動的に生成できるようにします。

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

注意

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

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

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

MongoDBコレクションに単一のドキュメントを追加するには 、mongoc_collection_insert_one() 関数を呼び出し、次のパラメータを渡します。

  • ドキュメントを挿入するコレクション

  • 挿入するドキュメント

  • 操作をカスタマイズするオプション 、または NULL

  • 操作結果を含む上書き可能なストレージへのポインター、または NULL

  • エラー値のロケーション、または NULL

ドキュメントを挿入するには、次の構文を使用します。

bson_t *document = BCON_NEW("<field name>", BCON_UTF8("<value>"));
bson_error_t error;
if (!mongoc_collection_insert_one(
collection, document, NULL, NULL, &error)) {
fprintf(stderr, "Insert one operation failed: %s\n", error.message);
}
bson_destroy(document);

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

bson_t *document = BCON_NEW("name", BCON_UTF8("Mongo's Burgers"));
bson_error_t error;
if (!mongoc_collection_insert_one(collection, document, NULL, NULL, &error)) {
fprintf(stderr, "Insert one operation failed: %s\n", error.message);
}
bson_destroy(document);

MongoDBコレクションに複数のドキュメントを追加するには 、mongoc_collection_insert_many() 関数を呼び出し、次のパラメータを渡します。

  • ドキュメントを挿入するコレクション

  • 挿入するドキュメントへのポインターの配列

  • 挿入するドキュメントの数

  • 操作をカスタマイズするオプション 、または NULL

  • 操作結果を含む上書き可能なストレージへのポインター、または NULL

  • エラー値のロケーション、または NULL

複数のドキュメントを挿入するには、次の構文を使用します。

size_t num_docs = 2;
bson_t *docs[num_docs];
docs[0] = BCON_NEW("<field name>", BCON_UTF8("<value>"));
docs[1] = BCON_NEW("<field name>", BCON_UTF8("<value>"));
bson_error_t error;
if (!mongoc_collection_insert_many(collection, (const bson_t **) docs, num_docs, NULL, NULL, &error)) {
fprintf(stderr, "Insert many operation failed: %s\n", error.message);
}
bson_destroy(docs[0]);
bson_destroy(docs[1]);

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

size_t num_docs = 2;
bson_t *docs[num_docs];
docs[0] = BCON_NEW("name", BCON_UTF8("Mongo's Burgers"));
docs[1] = BCON_NEW("name", BCON_UTF8("Mongo's Pizza"));
bson_error_t error;
if (!mongoc_collection_insert_many(collection, (const bson_t **) docs, num_docs, NULL, NULL, &error)) {
fprintf(stderr, "Insert many operation failed: %s\n", error.message);
}
bson_destroy(docs[0]);
bson_destroy(docs[1]);

オプション値を指定するBSONドキュメントを渡すことで、mongoc_collection_insert_one() 関数と mongoc_collection_insert_many() 関数の動作を変更できます。 次の表では、ドキュメントに設定できるオプションの一部について説明しています。

オプション
説明

bypassDocumentValidation

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

writeConcern

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

ordered

trueに設定されている場合、1 件の挿入が失敗すると、操作によるドキュメントの挿入が停止します。falseの場合、1つの挿入が失敗したときに、操作は残りのドキュメントの挿入を続行します。このオプションを mongoc_collection_insert_one() 関数に渡すことはできません。
デフォルトはtrueです。
タイプ: bool

comment

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

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

size_t num_docs = 3;
bson_t *docs[num_docs];
docs[0] = BCON_NEW("name", BCON_UTF8("Mongo's Burgers"));
docs[1] = BCON_NEW("name", BCON_UTF8("Mongo's Pizza"));
docs[2] = BCON_NEW("name", BCON_UTF8("Mongo's Tacos"));
bson_t opts;
bson_init(&opts);
bson_append_bool(&opts, "bypassDocumentValidation", -1, true);
bson_error_t error;
if (!mongoc_collection_insert_many(collection, (const bson_t **) docs, num_docs, &opts, NULL, &error)) {
fprintf(stderr, "Insert many operation failed: %s\n", error.message);
}
bson_destroy(docs[0]);
bson_destroy(docs[1]);
bson_destroy(docs[2]);
bson_destroy(&opts);

このガイドで説明されている関数の詳細については、次のAPIドキュメントを参照してください。