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

Delete Documents

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

削除操作は、 MongoDBコレクションから 1 つ以上のドキュメントを削除します。mongoc_collection_delete_one() または mongoc_collection_delete_many() 関数を使用して削除操作を実行できます。

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

次の機能を使用して削除操作を実行できます。

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

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

各削除関数は次のパラメータを受け入れます。

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

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

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

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

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

bson_t *filter = BCON_NEW("<field name>", BCON_UTF8("<value>"));
bson_error_t error;
if (!mongoc_collection_delete_one(collection, filter, NULL, NULL, &error)) {
fprintf(stderr, "Delete error: %s\n", error.message);
}
bson_destroy(filter);

次の例では、 mongoc_collection_delete_one() 関数を使用して、name 値が "Ready Penny Inn" であるドキュメントをrestaurantsコレクション内の削除します。

bson_t *filter = BCON_NEW("name", BCON_UTF8("Ready Penny Inn"));
bson_error_t error;
if (!mongoc_collection_delete_one(collection, filter, NULL, NULL, &error)) {
printf("Delete error: %s\n", error.message);
}
bson_destroy(filter);

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

bson_t *filter = BCON_NEW("<field name>", BCON_UTF8("<value>"));
bson_error_t error;
if (!mongoc_collection_delete_many(collection, filter, NULL, NULL, &error)) {
fprintf(stderr, "Delete error: %s\n", error.message);
}
bson_destroy(filter);

次の例では、 mongoc_collection_delete_many() 関数を使用して、borough 値が "Brooklyn" である restaurantsコレクション内のすべてのドキュメントを削除します。

bson_t *filter = BCON_NEW("borough", BCON_UTF8("Brooklyn"));
bson_error_t error;
if (!mongoc_collection_delete_many(collection, filter, NULL, NULL, &error)) {
printf("Delete error: %s\n", error.message);
}
bson_destroy(filter);

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

フィールド
説明

collation

テキストを比較するときに使用する言語照合の種類を指定します。詳細については、MongoDB Server マニュアルの「照合」を参照してください。
タイプ: bson_t

writeConcern

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

let

操作の可読性を向上させる値のリストを含むドキュメントを指定します。値は、ドキュメントフィールドを参照しない定数または閉じた式である必要があります。詳細については、MongoDB Server マニュアルのlet ステートメントを参照してください。
タイプ: bson_t

comment

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

次の例では、 mongoc_collection_delete_many() 関数を呼び出して、name 値に string "Mongo" が含まれる restaurantsコレクション内のすべてのドキュメントを削除します。 また、 comment オプションを設定して、操作にコメントを追加します。

bson_t *filter = BCON_NEW("name", "{", "$regex", BCON_UTF8("Mongo"), "}");
bson_error_t error;
bson_t opts;
bson_init(&opts);
BCON_APPEND(&opts, "comment", BCON_UTF8("Deleting Mongo restaurants"));
if (!mongoc_collection_delete_many(collection, filter, &opts, NULL, &error)) {
printf("Delete error: %s\n", error.message);
}
bson_destroy(filter);
bson_destroy(&opts);

Tip

前述の例で mongoc_collection_delete_many() ではなく mongoc_collection_delete_one() 関数を使用すると、ドライバーは name 値として "Mongo" を含む最初のドキュメントのみを削除します。

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