Docs Home → 애플리케이션 개발 → Python 드라이버 → PyMongo
문서 삭제
개요
이 가이드에서는 PyMongo를 사용하여 삭제 작업을 수행하여 MongoDB 컬렉션에서 문서를 제거하는 방법을 배울 수 있습니다.
삭제 작업은 MongoDB 컬렉션에서 하나 이상의 문서를 제거합니다. delete_one()
또는 delete_many()
메서드를 사용하여 삭제 작업을 수행할 수 있습니다.
샘플 데이터
이 가이드의 예제에서는 Atlas 샘플 데이터 세트 의 sample_restaurants.restaurants
컬렉션을 사용합니다. 무료 MongoDB Atlas cluster 를 생성하고 샘플 데이터 세트를 로드하는 방법을 알아보려면 PyMongo시작하기 튜토리얼을 참조하세요.
삭제 작업
다음 방법을 사용하여 MongoDB에서 삭제 작업을 수행할 수 있습니다.
delete_one()
Atlas Search 기준과 일치 하는 첫 번째 문서를 삭제합니다.delete_many()
Atlas Search 기준과 일치하는 모든 문서 를 삭제합니다.
각 삭제 메서드에는 제거하기 위해 선택할 문서를 결정하는 Atlas Search 기준을 지정하는 쿼리 필터 문서가 필요합니다. 쿼리 필터에 대한 자세한 내용은 MongoDB Server 매뉴얼의 필터 문서 쿼리 섹션 을 참조하세요.
문서 하나 삭제
다음 예제에서는 delete_one()
메서드를 사용하여 restaurants
컬렉션에서 name
값이 "Ready Penny Inn"
인 문서를 제거합니다.
query_filter = { "name": "Ready Penny Inn" } result = restaurants.delete_one(query_filter)
여러 문서 삭제
다음 예제에서는 delete_many()
메서드를 사용하여 restaurants
컬렉션에서 borough
값이 "Brooklyn"
인 모든 문서를 제거합니다.
query_filter = { "borough": "Brooklyn" } result = restaurants.delete_many(query_filter)
삭제 작업 사용자 지정
delete_one()
및 delete_many()
메서드는 선택적으로 추가 매개변수를 허용하며, 이는 삭제 작업을 구성하는 데 사용할 수 있는 옵션을 나타냅니다. 추가 옵션을 지정하지 않으면 드라이버는 삭제 작업을 사용자 지정하지 않습니다.
속성 | 설명 |
---|---|
collation | Specifies the kind of language collation to use when sorting
results. For more information, see Collation
in the MongoDB Server manual. |
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()
메서드를 사용하여 restaurants
컬렉션에서 "Mongo"
string 을 포함하는 name
값을 가진 모든 문서를 삭제합니다. 또한 comment
옵션을 사용하여 작업에 주석을 추가합니다.
query_filter = { 'name': {'$regex': 'Mongo' }} result = restaurants.delete_many(query_filter, comment="Deleting Mongo restaurants")
팁
앞의 예제에서 delete_many()
대신 delete_one()
메서드를 사용한 경우 드라이버는 name
값이 "Mongo"
포함된 첫 번째 문서만 삭제합니다.
반환 값
delete_one()
및 delete_many()
메서드는 DeleteResult
유형을 반환합니다. 이 유형에는 다음과 같은 속성이 포함되어 있습니다.
deleted_count
삭제된 문서 수를 나타냅니다.acknowledged
서버가 결과를 승인하는지 여부를 나타냅니다.raw_result
서버가 반환하는 원시 결과입니다.
참고
acknowledged
속성이 False
인 경우 DeleteResult
의 다른 모든 속성은 액세스 시 InvalidOperation
예외를 발생시킵니다. 서버가 쓰기 작업을 승인하지 않으면 드라이버는 이러한 값을 결정할 수 없습니다.
쿼리 필터가 어떤 문서와도 일치하지 않으면 드라이버는 어떤 문서도 삭제하지 않으며 deleted_count
은 0 됩니다.
API 문서
이 가이드에서 설명하는 메서드나 유형에 대해 자세히 알아보려면 다음 API 설명서를 참조하세요.