Docs Menu
Docs Home
/ / /
C ドライバー
/

ドキュメントの挿入

項目一覧

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

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

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

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

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

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

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

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

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

If set to true, allows the write operation to opt out of document-level validation.
Defaults to false.
Type: bool

writeConcern

Sets the write concern for the operation.
Defaults to the write concern of the namespace.
Type: mongoc_write_concern_t

ordered

If set to true, the operation stops inserting documents when one insert fails. If false, the operation continues to insert the remaining documents when one insert fails. You cannot pass this option to the mongoc_collection_insert_one() function.
Defaults to true.
Type: bool

comment

A comment to attach to the operation. For more information, see the insert command fields guide in the MongoDB Server manual.
Type: 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ドキュメントを参照してください。

戻る

Write Data