AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

Delete Documents

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

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

このガイドの例では、Atlasサンプルデータセットsample_restaurantsデータベースの restaurantsコレクションを使用します。Rubyアプリケーションからこのコレクションにアクセスするには、Atlas クラスターに接続する Mongo::Clientオブジェクトを作成し、次の値を database 変数と collection 変数に割り当てます。

database = client.use('sample_restaurants')
collection = database[:restaurants]

MongoDB Atlasクラスターを無料で作成して、サンプルデータセットをロードする方法については、MongoDBを使い始めるガイドを参照してください。

MongoDB では、次の方法で削除操作を実行できます。

  • delete_oneは、検索条件に一致する最初のドキュメントを削除します。

  • delete_manyは、検索条件に一致するすべてのドキュメントを削除します

各削除メソッドにはクエリフィルターパラメーターが必要です。このパラメーターは、削除対象として選択するドキュメントを決定する検索条件を指定します。クエリフィルターの詳細については、クエリの指定ガイドを参照してください。

次の例では、 delete_oneメソッドを使用して、 nameフィールドの値が"Happy Garden"であるドキュメントを削除します。

filter = { name: 'Happy Garden' }
result = collection.delete_one(filter)
puts "Deleted #{result.deleted_count} document(s)"
Deleted 1 document(s)

次の例では、 delete_manyメソッドを使用して、 boroughフィールドの値が"Brooklyn"で、かつnameフィールドの値が"Starbucks"であるすべてのドキュメントを削除します。

filter = { name: 'Starbucks', borough: 'Brooklyn' }
result = collection.delete_many(filter)
puts "Deleted #{result.deleted_count} document(s)"
Deleted 3 document(s)

削除操作を構成するオプションを設定するには、Hashオブジェクトをdelete_one メソッドと delete_many メソッドにパラメーターとして渡します。オプションを指定しない場合、ドライバーはデフォルト設定で削除操作を実行します。

次の表では、削除操作を構成するために使用できるオプションについて説明します。

オプション
説明

collation

結果をソートするときに使用する言語照合の種類を指定します。 詳細については、MongoDB Server マニュアルの 「照合」 を参照してください。

session

操作に使用するセッションを指定します。セッションの詳細については、 MongoDB Serverマニュアルの 「クライアント セッションと因果整合性の保証」 を参照してください。

hint

ドキュメントを照合するときに使用するインデックスを指定します。詳しくは、 MongoDB Serverマニュアルの 参照ページの ヒント オプションを参照してください。delete

let

操作の最上位変数を設定するためのパラメーター名と値のマップを提供します。値は、ドキュメントフィールドを参照しない定数または閉じた式である必要があります。詳しくは、 deleteMongoDB Serverマニュアルの 参照ページの let オプションを参照してください。

次のコードでは、hint オプションを指定して、削除操作に"name_index"インデックスを使用するように指示します。次に、この例ではdelete_many メソッドを使用して、string "Red" を含む nameフィールド値を持つ restaurantsコレクション内のすべてのドキュメントを削除します。

filter = { name: /Red/ }
options = { hint: 'name_index' }
result = collection.delete_many(filter, options)
puts "Deleted #{result.deleted_count} document(s)"
Deleted 124 document(s)

Tip

前述の例でdelete_manyメソッドではなくdelete_oneメソッドを使用すると、ドライバーはクエリフィルターに一致する最初のドキュメントのみを削除します。

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