문서 삭제
이 페이지의 내용
개요
이 가이드에서는 MongoDB 코틀린(Kotlin) 드라이버를 사용하여 문서를 제거하는 방법에 대해 설명합니다.
쿼리 필터를 deleteOne()
, deleteMany()
또는 findOneAndDelete()
메서드에 전달하여 문서를 제거할 수 있습니다.
deleteOne()
메서드는 단일 문서를 삭제합니다. 쿼리 필터가 두 개 이상의 문서와 일치하는 경우 메서드는 collection에서 처음 일치하는 항목을 제거합니다.
deleteMany()
메서드는 쿼리 필터와 일치하는 모든 문서를 삭제합니다.
findOneAndDelete()
메서드는 collection에서 처음 일치하는 항목을 원자 단위로 찾아서 삭제합니다.
인덱스를 데이터 정렬 또는 힌트로 지정하려면 deleteOne()
및 deleteMany()
메서드에 대한 두 번째 매개변수로 DeleteOptions
을 사용합니다.
데이터 정렬을 지정하거나, 인덱스에 힌트를 제공하거나, 정렬 순서를 지정하거나, 반환된 문서에 프로젝션을 지정하려면 findOneAndDelete()
메서드의 두 번째 매개변수로 FindOneAndDeleteOptions
를 사용합니다.
팁
단일 문서를 삭제할 때 _id
와 같은 고유 인덱스로 쿼리를 필터링하여 쿼리가 삭제하려는 문서와 일치하도록 합니다.
샘플 문서
다음 예는 8가지 색상의 페인트를 판매하는 페인트 가게에 관한 예입니다. 이 스토어는 연례 온라인 판매를 통해 paint_inventory
collection에 다음 문서를 포함시켰습니다.
{ "_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( val id: Int, val qty: Int, val color: String )
복수의 문서 삭제
페인트 매장 웹사이트에는 paint_inventory
collection의 모든 문서가 표시됩니다. 매장에서는 고객의 혼동을 줄이기 위해 재고가 없는 색상을 제거하려고 합니다.
재고가 없는 색상을 제거하려면 qty
이 0
인 paint_inventory
컬렉션을 쿼리하고 쿼리를 deleteMany()
메서드에 전달합니다.
val filter = Filters.eq("qty", 0) collection.deleteMany(filter)
다음은 paint_inventory
collection에 남아 있는 문서를 보여줍니다.
{ "_id": 1, "color": "red", "qty": 5 } { "_id": 2, "color": "purple", "qty": 8 } { "_id": 5, "color": "yellow", "qty": 6 } { "_id": 8, "color": "black", "qty": 8 }
문서 삭제
이 가게는 남은 노란색 페인트 수량을 기부합니다. 즉, 노란색의 qty
는 이제 0
이며 collection에서 노란색을 제거해야 합니다.
노란색을 제거하려면 color
가 "yellow"
인 paint_inventory
컬렉션을 쿼리하고 deleteOne()
메서드에 쿼리를 전달합니다.
val filter = Filters.eq("color", "yellow") collection.deleteOne(filter)
다음은 paint_inventory
collection에 남아 있는 문서를 보여줍니다.
{ "_id": 1, "color": "red", "qty": 5 } { "_id": 2, "color": "purple", "qty": 8 } { "_id": 8, "color": "black", "qty": 8 }
문서 찾기 및 삭제
상점에서는 나머지 수량의 자주색 페인트를 뽑고 paint_inventory
collection에서 자주색을 제거하려고 합니다.
색상을 선택하려면 color
이 "purple"
인 paint_inventory
collection을 쿼리하고 쿼리를 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
collection에 남아 있는 문서를 보여줍니다.
{ "_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() MongoDB Server 수동 입력
db.collection.deleteMany() MongoDB Server 수동 입력
db.collection.findOneAndDelete() MongoDB Server 수동 입력