Docs Menu
Docs Home
/ / /
Kotlin コルーチン
/ / /

Delete Documents

項目一覧

  • Overview
  • サンプル ドキュメント
  • 多数のドキュメントの削除
  • ドキュメントの削除
  • ドキュメントの検索と削除

このガイドでは、MongoDB Kotlin ドライバーを使用してドキュメントを削除する方法を学習できます。

クエリフィルターを deleteOne()deleteMany() 、またはfindOneAndDelete()メソッドにクエリフィルターを渡すことで、ドキュメントを削除できます。

deleteOne()メソッドは 1 つのドキュメントを削除します。 クエリフィルターが複数のドキュメントに一致する場合、 メソッドはコレクション内の一致の最初の出現を削除します。

deleteMany()メソッドは、クエリフィルターに一致するすべてのドキュメントを削除します。

findOneAndDelete()メソッドは、コレクション内の一致の最初の出現をアトミックに検索して削除します。

照合を指定したり、インデックスをヒントにしたりするには、 メソッドとDeleteOptions メソッドの 2 番目のパラメータとしてdeleteOne() deleteMany()を使用します。

照合を指定する、インデックスのヒント、ソート順序を指定する、または返されたドキュメントのプロジェクションを指定するには、 findOneAndDelete()メソッドの 2 番目のパラメータとしてFindOneAndDeleteOptionsを使用します。

Tip

単一ドキュメントを削除する場合は、 _idなどの一意のインデックスでクエリをフィルタリングして、クエリが削除するドキュメントと一致していることを確認します。

次の例は、8 色の塗料を販売する塗料店です。 この店では毎年恒例のオンラインセールが行われ、 paint_inventoryコレクションに次のドキュメントが生成されました。

{ "_id": 1, "color": "red", "qty": 5 }
{ "_id": 2, "color": "purple", "qty": 8 }
{ "_id": 3, "color": "blue", "qty": 0 }
{ "_id": 4, "color": "white", "qty": 0 }
{ "_id": 5, "color": "yellow", "qty": 6 }
{ "_id": 6, "color": "pink", "qty": 0 }
{ "_id": 7, "color": "green", "qty": 0 }
{ "_id": 8, "color": "black", "qty": 8 }

このデータは、次の Kotlin データ クラスでモデル化されます。

data class PaintOrder(
@BsonId val id: Int,
val qty: Int,
val color: String
)

塗料店のウェブサイトには、 paint_inventoryコレクション内のすべてのドキュメントが表示されます。 顧客の混乱を減らすために、この店は在庫のない色を排除したいと考えています。

欠落している色を削除するには、 qty0であるpaint_inventoryコレクションをクエリし、そのクエリをdeleteMany()メソッドに渡します。

val filter = Filters.eq("qty", 0)
collection.deleteMany(filter)

以下は、 paint_inventoryコレクションに残っているドキュメントを示しています。

{ "_id": 1, "color": "red", "qty": 5 }
{ "_id": 2, "color": "purple", "qty": 8 }
{ "_id": 5, "color": "yellow", "qty": 6 }
{ "_id": 8, "color": "black", "qty": 8 }

この店では、黄色の塗料の残りの量を提供しています。 つまり、黄色のqty0になり、コレクションから黄色を除く必要があります。

黄色を削除するには、 color"yellow"であるpaint_inventoryコレクションをクエリし、そのクエリをdeleteOne()メソッドに渡します。

val filter = Filters.eq("color", "yellow")
collection.deleteOne(filter)

以下は、 paint_inventoryコレクションに残っているドキュメントを示しています。

{ "_id": 1, "color": "red", "qty": 5 }
{ "_id": 2, "color": "purple", "qty": 8 }
{ "_id": 8, "color": "black", "qty": 8 }

この店では、赤色の塗料の残りの量をラッパー処理して、 paint_inventoryコレクションから赤色を削除したいと考えています。

色を選択するには、 color"purple"であるpaint_inventoryコレクションをクエリし、そのクエリをfindOneAndDelete()メソッドに渡します。 他の削除メソッドとは異なり、 findOneAndDelete()は削除されたドキュメントを返します。

val filter = Filters.eq("color", "purple")
val result = collection.findOneAndDelete(filter)
println("The following was deleted: $result")
The following was deleted: PaintOrder(id=2, qty=8, color=purple)

注意

クエリフィルターに一致するものがない場合、ドキュメントは削除されず、メソッドはnullを返します。

以下は、 paint_inventoryコレクションに残っているドキュメントを示しています。

{ "_id": 1, "color": "red", "qty": 5 }
{ "_id": 8, "color": "black", "qty": 8 }

このガイドで言及されているメソッドとクラスの詳細については、次のリソースを参照してください。

  • deleteOne() API ドキュメント

  • deleteMany() API ドキュメント

  • findOneAndDelete() API ドキュメント

  • DeleteOptions API ドキュメント

  • FindOneAndDeleteOptions API ドキュメント

  • db.collection.deleteOne() サーバー マニュアル エントリ

  • db.collection.deleteMany() サーバー マニュアル エントリ

  • db.collection.findOneAndDelete() サーバー マニュアル エントリ

戻る

挿入操作