Overview
このガイドでは、 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()は、検索条件に一致するすべてのドキュメントを削除します
各削除関数は次のパラメータを受け入れます。
コレクション : 変更するコレクションを指定します。
結果のロケーション:操作結果を含む上書き可能なストレージへのポインター、または
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() 関数の動作を変更できます。 次の表では、ドキュメントに設定できるオプションの一部について説明しています。
フィールド | 説明 |
|---|---|
| テキストを比較するときに使用する言語照合の種類を指定します。詳細については、MongoDB Server マニュアルの「照合」を参照してください。 |
| 操作の書込み保証 (write concern) を設定します。 |
| 操作の可読性を向上させる値のリストを含むドキュメントを指定します。値は、ドキュメントフィールドを参照しない定数または閉じた式である必要があります。詳細については、MongoDB Server マニュアルのlet ステートメントを参照してください。 |
| 操作に添付するコメント。詳細については、MongoDB Server マニュアルの「 insert コマンド フィールド 」ガイドを参照してください。 |
次の例では、 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 ドキュメント
このガイドで説明されている関数の詳細については、次のAPIドキュメントを参照してください。