문서 삭제
개요
이 가이드에서는 삭제 작업을 사용하여 MongoDB 컬렉션에서 문서를 제거하는 방법에 대해 설명합니다.
샘플 데이터
이 가이드의 예에서는 restaurants
데이터베이스의 collection을 sample_restaurants
사용합니다. 이 collection의 문서는 다음 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 를 생성하고 이 샘플 데이터를 로드하는 방법을 알아보세요.
삭제 작업
삭제 작업을 사용하여 쿼리 필터와 일치하는 문서를 제거합니다. 쿼리 필터는 쿼리 필터 문서의 기준에 따라 삭제할 레코드를 결정합니다. 다음 방법을 사용하여 MongoDB에서 삭제 작업을 수행할 수 있습니다.
DeleteOne()
, 쿼리 필터와 일치하는 첫 번째 문서를 삭제합니다.DeleteMany()
, 쿼리 필터와 일치하는 모든 문서 를 삭제합니다.
문서 하나 삭제
다음 코드는 비동기 DeleteOneAsync()
메서드 또는 동기 DeleteOne()
메서드를 사용하여 단일 문서를 삭제하는 방법을 보여 줍니다.
var result = await _restaurantsCollection.DeleteOneAsync(filter);
var result = _restaurantsCollection.DeleteOne(filter);
여러 문서 삭제
다음 코드는 비동기 DeleteManyAsync()
메서드 또는 동기 DeleteMany()
메서드를 사용하여 일치하는 모든 문서를 삭제 하는 방법을 보여줍니다.
var result = await _restaurantsCollection.DeleteManyAsync(filter);
var result = _restaurantsCollection.DeleteMany(filter);
팁
이러한 메서드를 사용하여 실행할 수 있는 예시는 추가 정보에서 찾아보세요.
매개변수
DeleteOne()
및 DeleteMany()
메서드를 사용하려면 일치시킬 문서를 지정하는 쿼리 필터하다 를 전달해야 합니다. 쿼리 필터하다 를 구성하는 방법에 대한 자세한 내용 은 쿼리 문서 튜토리얼에서 확인할 수 있습니다.
두 메서드 모두 선택적으로 DeleteOptions
유형을 추가 매개 변수로 사용하며, 이는 삭제 작업을 구성하는 데 사용할 수 있는 옵션입니다. DeleteOptions
속성을 지정하지 않으면 운전자 는 삭제 작업을 사용자 지정하지 않습니다.
DeleteOptions
유형을 사용하면 다음과 같은 속성을 가진 옵션을 구성할 수 있습니다.
속성 | 설명 |
---|---|
Collation | Gets or sets the type of language collation to use when sorting
results. See the delete
statements
for more information. |
Comment | Gets or sets the comment for the operation. See the delete command
fields
for more information. |
Hint | Gets or sets the index to use to scan for documents. See the delete
statements
for more information. |
Let | Gets or sets the let document. See the delete command
fields
for more information. |
예시
다음 코드는 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 설명서를 참조하세요.