Docs Menu

Docs Homeアプリケーションの開発Python ドライバーPyMongo

Delete Documents

項目一覧

  • Overview
  • サンプル データ
  • 削除操作
  • 単一ドキュメントの削除
  • 複数のドキュメントの削除
  • 削除操作をカスタマイズする
  • 戻り値
  • API ドキュメント

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

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

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

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 ドキュメントを参照してください。

← ドキュメントの置換