Delete Documents
Overview
このガイドでは、PyMongo を使用して削除操作を実行し、MongoDB コレクションからドキュメントを削除する方法を学習できます。
削除操作は、MongoDB コレクションから 1 つ以上のドキュメントを削除します。 削除操作は、 delete_one()
またはdelete_many()
メソッドを使用して実行できます。
サンプル データ
このガイドの例では、 Atlas サンプル データセットのsample_restaurants.restaurants
コレクションを使用します。 To learn how to create a free MongoDB Atlas cluster and load the sample datasets, see the Get Started with PyMongo tutorial.
削除操作
MongoDB では、次の方法で削除操作を実行できます。
delete_one()
は、検索条件に一致する最初のドキュメントを削除します。delete_many()
は、検索条件に一致するすべてのドキュメントを削除します
各削除メソッドにはクエリフィルタードキュメント が必要です。このドキュメントは、削除対象として選択するドキュメントを決定する検索条件を指定します。 クエリフィルターの詳細については、 マニュアルの「 クエリフィルター ドキュメントMongoDB Server 」セクション を参照してください。
単一ドキュメントの削除
次の例では、 delete_one()
メソッドを使用して、 name
値が"Ready Penny Inn"
であるrestaurants
コレクション内のドキュメントを削除します。
query_filter = { "name": "Ready Penny Inn" } result = restaurants.delete_one(query_filter)
複数のドキュメントの削除
次の例では、 delete_many()
メソッドを使用して、 borough
値が"Brooklyn"
であるrestaurants
コレクション内のすべてのドキュメントを削除します。
query_filter = { "borough": "Brooklyn" } result = restaurants.delete_many(query_filter)
削除操作をカスタマイズする
オプションで、 delete_one()
メソッドとdelete_many()
メソッドは追加のパラメーターを受け入れます。これらのパラメーターは、削除操作を構成するために使用できるオプションを表します。 追加オプションを指定しない場合、ドライバーは削除操作をカスタマイズしません。
プロパティ | 説明 |
---|---|
collation | Specifies the kind of language collation to use when sorting
results. For more information, see Collation
in the MongoDB Server manual. |
hint | Gets or sets the index to scan for documents.
For more information, see the hint statement
in the MongoDB Server manual. |
session | An instance of ClientSession . |
let | A map of parameter names and values. 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. |
comment | A comment to attach to the operation. For more information, see the delete command
fields guide in the
MongoDB Server manual for more information. |
次のコードでは、 delete_many()
メソッドを使用して、string "Mongo"
を含むname
値を持つrestaurants
コレクション内のすべてのドキュメントを削除します。 また、 comment
オプションを使用して操作にコメントを追加します。
query_filter = { 'name': {'$regex': 'Mongo' }} result = restaurants.delete_many(query_filter, comment="Deleting Mongo restaurants")
Tip
上記の例でdelete_many()
ではなくdelete_one()
メソッドが使用されていた場合、ドライバーは"Mongo"
name
値を持つ最初のドキュメントのみを削除します。
戻り値
delete_one()
メソッドとdelete_many()
メソッドはDeleteResult
型を返します。 この型には、次のプロパティが含まれています。
deleted_count
は、削除されたドキュメントの数を示しますacknowledged
は、サーバーが結果を確認済みかどうかを示します。raw_result
は、サーバーによって返された未加工の結果です。
注意
acknowledged
属性がFalse
の場合、アクセス時にDeleteResult
の他のすべての属性によってInvalidOperation
例外が発生します。 サーバーが書込み (write) 操作を確認しない場合、ドライバーはこれらの値を決定できません。
クエリフィルターがどのドキュメントにも一致しない場合、ドライバーはドキュメントを削除せず、 deleted_count
は0です。
API ドキュメント
このガイドで説明したメソッドや型の詳細については、次の API ドキュメントを参照してください。