Delete Documents
Overview
このガイドでは、 Cドライバーを使用して 削除操作 を実行し、 MongoDBコレクションからドキュメントを削除する方法を学習できます。
削除操作は、 MongoDBコレクションから 1 つ以上のドキュメントを削除します。削除操作は、 mongoc_collection_delete_one()
または mongoc_collection_delete_many()
関数を使用して実行できます。
サンプル データ
このガイドの例では、 Atlas サンプル データセットのsample_restaurants
データベースのrestaurants
コレクションを使用します。 MongoDB Atlas クラスターを無料で作成して、サンプル データセットをロードする方法については、 「 Atlas を使い始める 」ガイドを参照してください。
削除操作
次の機能を使用して削除操作を実行できます。
mongoc_collection_delete_one()
は、検索条件に一致する最初のドキュメントを削除します。mongoc_collection_delete_many()
は、検索条件に一致するすべてのドキュメントを削除します
各削除関数は次のパラメータを受け入れます。
コレクション : 変更するコレクションを指定します。
クエリフィルタードキュメント: 削除するコレクションドキュメントを指定します。クエリフィルターの詳細については、 MongoDB Serverマニュアルの「 クエリフィルター ドキュメント 」セクションを参照してください。
結果のロケーション:操作結果を含む上書き可能なストレージへのポインター、または
NULL
を指定します。エラー ロケーション: エラー値、つまり
NULL
のロケーションを指定します。
単一ドキュメントの削除
次の例では、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);
複数のドキュメントの削除
次の例では、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()
関数の動作を変更できます。次の表では、ドキュメントに設定できるオプションの一部について説明しています。
フィールド | 説明 |
---|---|
| Specifies the kind of language collation to use when comparing
text. For more information, see Collation
in the MongoDB Server manual. Type: bson_t |
| Sets the write concern for the operation. Defaults to the write concern of the namespace. Type: mongoc_write_concern_t |
| Specifies a document with a list of values to improve operation readability.
Values must be constant or closed expressions that don't reference document
fields. For more information, see the let statement in the
MongoDB Server manual. Type: bson_t |
| 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_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ドキュメントを参照してください。