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

Update Documents

項目一覧

  • Overview
  • サンプル データ
  • アップデート操作
  • 1 つのドキュメントの更新
  • 多くのドキュメントの更新
  • 更新操作をカスタマイズする
  • 詳細情報
  • API ドキュメント

このガイドでは、 Cドライバーを使用してMongoDBコレクション内のドキュメントを更新する方法を学習できます。単一のドキュメントを更新するには mongoc_collection_update_one() 関数を呼び出し、複数のドキュメントを更新するには mongoc_collection_update_many() 関数を呼び出します。

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

MongoDBでは、次の関数を使用して更新操作を実行できます。

  • mongoc_collection_update_one()は、検索条件に一致する最初のドキュメントを更新します。

  • mongoc_collection_update_many()は、検索条件に一致するすべてのドキュメントを更新します

各更新関数は、次のパラメーターを受け入れます。

  • コレクション : 更新するコレクションを指定します。

  • クエリフィルタードキュメント: 更新するコレクションドキュメントを指定します。クエリフィルターの詳細については、 MongoDB Serverマニュアルの「 クエリフィルター ドキュメント 」セクションを参照してください。

  • ドキュメントの更新: 更新演算子 、または実行する更新の種類と、変更するフィールドと値を指定します。更新演算子とその使用方法のリストについては、 MongoDB Serverマニュアルの「 フィールド更新演算子 」のガイドを参照してください。

  • オプションドキュメント:操作をカスタマイズするためのオプション 、またはNULL を指定します。

  • 結果のロケーション :操作結果を含む上書き可能なストレージへのポインター、またはNULL を指定します。

  • エラー ロケーション : エラー値、またはNULL のロケーションを指定します。

次の例では、mongoc_collection_update_one() 関数を使用して、restaurantsコレクション内のドキュメントの name 値を "Bagels N Buns" から "2 Bagels 2 Buns" に更新します。

bson_t *query = BCON_NEW ("name", BCON_UTF8 ("Bagels N Buns"));
bson_t *update = BCON_NEW ("$set", "{", "name", BCON_UTF8 ("2 Bagels 2 Buns"), "}");
bson_error_t error;
if (!mongoc_collection_update_one (collection, query, update, NULL, NULL, &error)) {
fprintf (stderr, "Update one operation failed: %s\n", error.message);
}
bson_destroy (query);
bson_destroy (update);

次の例では、mongoc_collection_update_many() 関数を使用して、cuisine の値が "Pizza" であるすべてのドキュメントを更新します。更新後、ドキュメントの cuisine 値は "Pasta" になります。

bson_t *query = BCON_NEW ("cuisine", BCON_UTF8 ("Pizza"));
bson_t *update = BCON_NEW ("$set", "{", "cuisine", BCON_UTF8 ("Pasta"), "}");
bson_error_t error;
if (!mongoc_collection_update_many (collection, query, update, NULL, NULL, &error)) {
fprintf (stderr, "Update many operation failed: %s\n", error.message);
}
bson_destroy (query);
bson_destroy (update);

オプション値を指定するBSONドキュメントを渡すことで、mongoc_collection_update_one() 関数と mongoc_collection_update_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
collation
Specifies the kind of language collation to use when comparing text. For more information, see Collation in the MongoDB Server manual.
Type: bson_t
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
upsert
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_update_many() 関数を使用して、borough の値が "Manhattan" であるすべてのドキュメントを検索します。次に、これらのドキュメントの borough 値を "Manhattan (north)" にアップデートします。 upsert オプションは true に設定されているため、クエリフィルターが既存のドキュメントと一致しない場合、 Cドライバーは新しいドキュメントを挿入します。

bson_t *query = BCON_NEW ("borough", BCON_UTF8 ("Manhattan"));
bson_t *update = BCON_NEW ("$set", "{", "borough", BCON_UTF8 ("Manhattan (north)"), "}");
bson_error_t error;
bson_t opts;
bson_init (&opts);
bson_append_bool (&opts, "upsert", -1, true);
if (!mongoc_collection_update_many (collection, query, update, &opts, NULL, &error)) {
fprintf (stderr, "Update many operation failed: %s\n", error.message);
}
bson_destroy (query);
bson_destroy (update);
bson_destroy (&opts);

クエリフィルターの作成の詳細については、「 クエリの指定」ガイドを参照してください。

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

戻る

ドキュメントの置換