Docs Menu
Docs Home
/ / /
Pymongo ドライバー
/

Delete Documents

項目一覧

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

このガイドでは、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コレクション内のドキュメントを削除します。対応するコードを表示するには、Synchronous タブまたは Asynchronousタブを選択します。

query_filter = { "name": "Ready Penny Inn" }
result = restaurants.delete_one(query_filter)
query_filter = { "name": "Ready Penny Inn" }
result = await restaurants.delete_one(query_filter)

次の例では、delete_many() メソッドを使用して、borough 値が "Brooklyn" である restaurantsコレクション内のすべてのドキュメントを削除します。対応するコードを表示するには、Synchronous タブまたは Asynchronousタブを選択します。

query_filter = { "borough": "Brooklyn" }
result = restaurants.delete_many(query_filter)
query_filter = { "borough": "Brooklyn" }
result = await restaurants.delete_many(query_filter)

オプションで、 delete_one()メソッドとdelete_many()メソッドは追加のパラメーターを受け入れます。これらのパラメーターは、削除操作を構成するために使用できるオプションを表します。 追加オプションを指定しない場合、ドライバーは削除操作をカスタマイズしません。

プロパティ
説明

collation

Specifies the kind of language collation to use when sorting results. See Collation for more information.

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 オプションを使用して操作にコメントを追加します。対応するコードを表示するには、Synchronous タブまたは Asynchronousタブを選択します。

query_filter = { 'name': {'$regex': 'Mongo' }}
result = restaurants.delete_many(query_filter, comment="Deleting Mongo restaurants")
query_filter = { 'name': {'$regex': 'Mongo' }}
result = await restaurants.delete_many(query_filter, comment="Deleting Mongo restaurants")

Tip

上記の例でdelete_many()ではなくdelete_one()メソッドが使用されていた場合、ドライバーは"Mongo" name値を持つ最初のドキュメントのみを削除します。

削除操作を実行するときに、ドライバーが使用する 照合 を指定できます。

照合は、大文字と小文字やアクセント記号など、string を比較するための言語固有のルールのセットです。

Collation照合を指定するには、 クラスまたはPython辞書のインスタンスを作成します。Collation コンストラクターに渡すオプション、または辞書のキーとして含めるオプションのリストについては、 MongoDB Serverマニュアルの 照合 を参照してください。

Tip

照合のインポート

Collationクラスのインスタンスを作成するには、pymongo.collation からインポートする必要があります。

次の例では、前の例と同じ削除操作を実行しますが、デフォルトの照合は fr_CA です。対応するコードを表示するには、Synchronous タブまたは Asynchronousタブを選択します。

from pymongo.collation import Collation
query_filter = { "borough": "Brooklyn" }
result = restaurants.delete_many(query_filter, collation=Collation(locale='fr_CA'))
from pymongo.collation import Collation
query_filter = { "borough": "Brooklyn" }
result = await restaurants.delete_many(query_filter, collation=Collation(locale='fr_CA'))

注意

操作照合がデフォルトを上書き

操作の一部として照合を指定すると、コレクションのデフォルトの照合が上書きされます。

delete_one()メソッドとdelete_many()メソッドはDeleteResult型を返します。 この型には、次のプロパティが含まれています。

  • deleted_countは、削除されたドキュメントの数を示します

  • acknowledgedは、サーバーが結果を確認済みかどうかを示します。

  • raw_resultは、サーバーによって返された未加工の結果です。

注意

acknowledged属性がFalseの場合、アクセス時にDeleteResultの他のすべての属性によってInvalidOperation例外が発生します。 サーバーが書込み (write) 操作を確認しない場合、ドライバーはこれらの値を決定できません。

クエリフィルターがどのドキュメントにも一致しない場合、ドライバーはドキュメントを削除せず、 deleted_countは0です。

このガイドで説明したメソッドや型の詳細については、次の API ドキュメントを参照してください。

戻る

ドキュメントの置換