개요
이 가이드에서는 삭제 작업을 사용하여 MongoDB 컬렉션에서 문서를 제거하는 방법에 대해 설명합니다.
샘플 데이터
이 가이드의 예에서는 sample_restaurants 데이터베이스의 restaurants 컬렉션을 사용합니다. 이 컬렉션의 문서는 다음 Restaurant, Address, GradeEntry 클래스를 모델로 사용합니다.
public class Restaurant { public ObjectId Id { get; set; } public string Name { get; set; } [] public string RestaurantId { get; set; } public string Cuisine { get; set; } public Address Address { get; set; } public string Borough { get; set; } public List<GradeEntry> Grades { get; set; } }
public class Address { public string Building { get; set; } [] public double[] Coordinates { get; set; } public string Street { get; set; } [] public string ZipCode { get; set; } }
public class GradeEntry { public DateTime Date { get; set; } public string Grade { get; set; } public float? Score { get; set; } }
참고
restaurants 컬렉션 의 문서는 대소문자 명명 규칙을 사용합니다. 이 가이드 의 예제에서는 ConventionPack 를 사용하여 컬렉션 의 필드를 파스칼식 대/소문자로 역직렬화하고 Restaurant 클래스의 속성에 매핑합니다.
사용자 지정 직렬화에 대해 자세히 알아보려면 사용자 지정 직렬화를참조하세요.
이 컬렉션 Atlas 에서 제공하는 샘플 데이터 세트에서 가져온 것입니다. 무료 MongoDB cluster 생성하고 이 샘플 데이터를 로드하는 방법을 학습 .NET/ C# 드라이버 시작하기 를 참조하세요.
삭제 작업
삭제 작업을 사용하여 쿼리 필터와 일치하는 문서를 제거합니다. 쿼리 필터는 쿼리 필터 문서의 기준에 따라 삭제할 레코드를 결정합니다. 다음 방법을 사용하여 MongoDB에서 삭제 작업을 수행할 수 있습니다.
DeleteOne(), 쿼리 필터와 일치하는 첫 번째 문서를 삭제합니다.DeleteMany(), 쿼리 필터와 일치하는 모든 문서 를 삭제합니다.
문서 하나 삭제
다음 코드는 동기 DeleteOne() 메서드 또는 비동기 DeleteOneAsync() 메서드를 사용하여 문서 하나를 삭제 방법을 보여줍니다.
var result = _restaurantsCollection.DeleteOne(filter);
var result = await _restaurantsCollection.DeleteOneAsync(filter);
여러 문서 삭제
다음 코드는 동기 DeleteMany() 메서드 또는 비동기 DeleteManyAsync() 메서드를 사용하여 일치하는 모든 문서를 삭제 방법을 보여줍니다.
var result = _restaurantsCollection.DeleteMany(filter);
var result = await _restaurantsCollection.DeleteManyAsync(filter);
팁
이러한 메서드를 사용하여 실행할 수 있는 예시는 추가 정보에서 찾아보세요.
매개변수
DeleteOne() 및 DeleteMany() 메서드를 사용하려면 일치시킬 문서를 지정하는 쿼리 필터하다 를 전달해야 합니다. 쿼리 필터하다 를 구성하는 방법에 대한 자세한 내용 은 쿼리 문서 튜토리얼에서 확인할 수 있습니다.
두 메서드 모두 선택적으로 DeleteOptions 유형을 추가 매개 변수로 사용하며, 이는 삭제 작업을 구성하는 데 사용할 수 있는 옵션입니다. DeleteOptions 속성을 지정하지 않으면 운전자 는 삭제 작업을 사용자 지정하지 않습니다.
DeleteOptions 유형을 사용하면 다음과 같은 속성을 가진 옵션을 구성할 수 있습니다.
속성 | 설명 |
|---|---|
| 결과를 정렬할 때 사용할 언어 데이터 정렬 유형을 가져오거나 설정합니다. 자세한 내용은 이 페이지의 데이터 정렬 섹션을 참조하세요. |
| 작업에 대한 주석을 가져오거나 설정합니다. 자세한 내용은 삭제 명령 필드를 참조하세요. |
| 문서를 스캔할 때 사용할 인덱스를 가져오거나 설정합니다. 자세한 내용은 삭제 성명서를 참조하세요. |
| 허용 문서를 가져오거나 설정합니다. 자세한 내용은 삭제 명령 필드를 참조하세요. |
데이터 정렬
작업에 대한 데이터 정렬을 구성하려면 데이터 정렬 클래스의 인스턴스를 만듭니다.
다음 표에서는 Collation 생성자가 허용하는 매개변수에 대해 설명합니다. 또한 각 설정의 값을 읽는 데 사용할 수 있는 해당 클래스 속성 도 나열되어 있습니다.
Parameter | 설명 | 클래스 속성 |
|---|---|---|
| 유니코드용 국제 구성 요소(ICU) 국가 및 언어 설정 및 언어 설정을 지정합니다. 지원되는 국가 및 언어 설정 목록은 MongoDB Server |
|
| (선택 사항) 대소문자 비교를 포함할지 여부를 지정합니다. |
|
| (선택 사항) 3차 수준 비교 시 대소문자 차이의 정렬 순서를 지정합니다. |
|
| (선택 사항) ICU 문서에 정의된 |
|
| (선택 사항) 운전자 숫자 문자열을 숫자로 비교할지 여부를 지정합니다. |
|
| (선택 사항) 운전자 비교를 위해 공백과 문장 부호를 기본 문자로 간주할지 여부를 지정합니다. |
|
| (선택 사항) 인수가 일 때 운전자 무시할 수 있는 것으로 간주하는 |
|
| (선택 사항) 운전자 필요에 따라 텍스트를 정규화할지 여부를 지정합니다. |
|
| (선택 사항) 분음 부호가 포함된 문자열을 문자열 뒤쪽에서 앞쪽으로 정렬할지 여부를 지정합니다. |
|
데이터 정렬에 대한 자세한 내용은 MongoDB Server 매뉴얼의 데이터 정렬 페이지를 참조하세요.
예시
다음 코드는 Atlas Search 메서드를 사용하여 DeleteMany() "borough_1" 인덱스를 검색하고 address.street 필드 값에 "Pearl Street" 문구가 포함된 모든 문서를 삭제합니다.
var filter = Builders<Restaurant>.Filter .Regex("address.street", "Pearl Street"); DeleteOptions opts = new DeleteOptions { Hint = "borough_1" }; Console.WriteLine("Deleting documents..."); var result = _restaurantsCollection.DeleteMany(filter, opts); Console.WriteLine($"Deleted documents: {result.DeletedCount}"); Console.WriteLine($"Result acknowledged? {result.IsAcknowledged}");
Deleting documents... Deleted documents: 26 Result acknowledged? True
팁
앞의 예시 에서 DeleteMany() 대신 DeleteOne() 메서드를 사용한 경우 운전자 는 26 일치하는 문서 중 첫 번째 문서를 삭제 합니다.
반환 값
DeleteOne() 및 DeleteMany() 메서드는 DeleteResult 유형을 반환합니다. 이 유형에는 삭제된 문서 수를 나타내는 DeletedCount 속성 과 결과가 승인되었는지 여부를 나타내는 IsAcknowledged 속성 이 포함됩니다. 쿼리 필터하다 가 어떤 문서와도 일치하지 않으면 문서가 삭제되지 않고 DeletedCount 는 0 이 됩니다.
추가 정보
삭제 작업의 실행 가능한 예는 다음 사용 예시를 참조하세요.
API 문서
이 가이드에서 설명하는 메서드나 유형에 대해 자세히 알아보려면 다음 API 설명서를 참조하세요.