Docs Menu
Docs Home
/ / /
Kotlin Sync ドライバー
/

Delete Documents

項目一覧

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

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

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

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

このコレクション内のドキュメントは、次の Kotlin データ クラスによってモデル化されます。

data class Restaurant(val name: String, val borough: String)

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

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

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

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

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

val filter = eq(Restaurant::name.name, "Happy Garden")
val result = collection.deleteOne(filter)

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

val filter = and(
eq(Restaurant::borough.name, "Brooklyn"),
eq(Restaurant::name.name, "Starbucks")
)
val result = collection.deleteMany(filter)

deleteOne()メソッドとdeleteMany()メソッドはオプションで、削除操作を構成するために使用できるオプションを表すDeleteOptionsパラメータを受け入れます。 オプションを指定しない場合、ドライバーはデフォルト設定で削除操作を実行します。

次の表では、 DeleteOptionsインスタンスを構成するために使用できる setter メソッドについて説明します。

方式
説明

collation()

Specifies the kind of language collation to use when sorting results. For more information, see Collation in the MongoDB Server manual.

hint()

Specifies the index to use when matching documents. For more information, see the hint statement in the MongoDB Server manual.

hintString()

Specifies the index as a string to use when matching documents. For more information, see the hint statement in the MongoDB Server manual.

let()

Provides a map of parameter names and values to set top-level variables for the operation. 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()

Sets a comment to attach to the operation. For more information, see the delete command fields guide in the MongoDB Server manual for more information.

次のコードでは、オプションを作成し、 comment()メソッドを使用して削除操作にコメントを追加します。 次に、この例ではdeleteMany()メソッドを使用して、 nameフィールドの値に string "Red"が含まれるrestaurantsコレクション内のすべてのドキュメントを削除します。

val opts = DeleteOptions().comment("sample comment")
val filter = regex(Restaurant::name.name, "Red")
val result = collection.deleteOne(filter, opts)

Tip

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

deleteOne()メソッドとdeleteMany()メソッドはそれぞれDeleteResultインスタンスを返します。 DeleteResultインスタンスから次の情報にアクセスできます。

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

  • wasAcknowledged()は、サーバーが結果を確認した場合にtrueを返します。

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

注意

wasAcknowledged()メソッドがfalseを返す場合、 deletedCountプロパティにアクセスしようとするとInvalidOperation例外が発生します。 サーバーが書込み (write) 操作を確認しない場合、ドライバーはこれらの値を決定できません。

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

戻る

置換