문서 삭제
개요
이 가이드에서는 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"
인 문서 제거 . Synchronous 또는 Asynchronous 탭 선택하여 해당 코드를 확인합니다.
query_filter = { "name": "Ready Penny Inn" } result = restaurants.delete_one(query_filter)
query_filter = { "name": "Ready Penny Inn" } result = await restaurants.delete_one(query_filter)
여러 문서 삭제
다음 예시 delete_many()
메서드를 사용하여 restaurants
컬렉션 에서 borough
값이 "Brooklyn"
인 모든 문서를 제거 . Synchronous 또는 Asynchronous 탭 선택하여 해당 코드를 확인합니다.
query_filter = { "borough": "Brooklyn" } result = restaurants.delete_many(query_filter)
query_filter = { "borough": "Brooklyn" } result = await restaurants.delete_many(query_filter)
삭제 작업 사용자 지정
delete_one()
및 delete_many()
메서드는 선택적으로 추가 매개변수를 허용하며, 이는 삭제 작업을 구성하는 데 사용할 수 있는 옵션을 나타냅니다. 추가 옵션을 지정하지 않으면 드라이버는 삭제 작업을 사용자 지정하지 않습니다.
속성 | 설명 |
---|---|
| Specifies the kind of language collation to use when sorting
results. See Collation for more information. |
| Gets or sets the index to scan for documents.
For more information, see the hint statement
in the MongoDB Server manual. |
| An instance of ClientSession . |
| 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. |
| 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"
문자열을 포함하는 name
값을 가진 모든 문서를 삭제 . 또한 comment
옵션을 사용하여 작업에 주석을 추가합니다. Synchronous 또는 Asynchronous 탭 선택하여 해당 코드를 확인합니다.
query_filter = { 'name': {'$regex': 'Mongo' }} result = restaurants.delete_many(query_filter, comment="Deleting Mongo restaurants")
query_filter = { 'name': {'$regex': 'Mongo' }} result = await restaurants.delete_many(query_filter, comment="Deleting Mongo restaurants")
팁
앞의 예제에서 delete_many()
대신 delete_one()
메서드를 사용한 경우 드라이버는 name
값이 "Mongo"
포함된 첫 번째 문서만 삭제합니다.
데이터 정렬
삭제 작업을 수행할 때 운전자 에서 사용할 데이터 정렬을 지정할 수 있습니다.
데이터 정렬은 대소문자 및 악센트 표시와 같이 문자열 비교를 위한 언어별 규칙 설정하다 입니다.
데이터 정렬을 지정하려면 Collation
클래스 또는 Python 사전의 인스턴스 만듭니다. Collation
생성자에 전달하거나 사전에 키로 포함할 수 있는 옵션 목록은 MongoDB Server 매뉴얼의 데이터 정렬 을 참조하세요.
팁
데이터 정렬 가져오기
Collation
클래스의 인스턴스 만들려면 pymongo.collation
에서 가져와야 합니다.
다음 예시 이전 예시 와 동일한 삭제 작업을 수행하지만 기본값 데이터 정렬은 fr_CA
입니다. Synchronous 또는 Asynchronous 탭 선택하여 해당 코드를 확인합니다.
from pymongo.collation import Collation query_filter = { "borough": "Brooklyn" } result = restaurants.delete_many(query_filter, collation=Collation(locale='fr_CA'))
from pymongo.collation import Collation query_filter = { "borough": "Brooklyn" } result = await restaurants.delete_many(query_filter, collation=Collation(locale='fr_CA'))
참고
작업 데이터 정렬 재정의 기본값
작업의 일부로 데이터 정렬을 지정하면 컬렉션 의 기본값 데이터 정렬이 재정의됩니다.
반환 값
delete_one()
및 delete_many()
메서드는 DeleteResult
유형을 반환합니다. 이 유형에는 다음과 같은 속성이 포함되어 있습니다.
deleted_count
삭제된 문서 수를 나타냅니다.acknowledged
서버가 결과를 승인하는지 여부를 나타냅니다.raw_result
서버가 반환하는 원시 결과입니다.
참고
acknowledged
속성이 False
인 경우 DeleteResult
의 다른 모든 속성은 액세스 시 InvalidOperation
예외를 발생시킵니다. 서버가 쓰기 작업을 승인하지 않으면 드라이버는 이러한 값을 결정할 수 없습니다.
쿼리 필터가 어떤 문서와도 일치하지 않으면 드라이버는 어떤 문서도 삭제하지 않으며 deleted_count
은 0 됩니다.
API 문서
이 가이드에서 설명하는 메서드나 유형에 대해 자세히 알아보려면 다음 API 설명서를 참조하세요.