UpdateOne
개요
이 가이드 에서는 MongoDB .NET/ C# 드라이버 사용하여 단일 문서 에서 값을 업데이트 방법을 학습 수 있습니다.
.NET/ C# 드라이버 다음 메서드를 제공하여 값을 업데이트 .
UpdateOne()
: 단일 문서 에서 하나 이상의 필드를 업데이트합니다.UpdateOneAsync()
:UpdateOne()
의 비동기 버전입니다.
다음 섹션에서는 이러한 메서드에 대해 자세히 설명합니다.
참고
메서드 오버로드
이 페이지의 많은 메서드에는 여러 오버로드가 있습니다. 이 가이드 의 예제에서는 각 메서드에 대한 정의를 하나만 보여줍니다. 사용 가능한 오버로드에 대한 자세한 내용은 API 설명서를 참조하세요.
샘플 데이터
이 가이드의 예에서는 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 클러스터를 생성하고 이 샘플 데이터를 로드하는 방법을 알아보세요.
메서드 및 매개변수
UpdateOne()
및 UpdateOneAsync()
메서드는 다음 매개변수를 허용합니다.
Parameter | 설명 |
---|---|
| 업데이트 할 문서 지정하는 데이터 유형: FilterDefinition |
|
데이터 유형: UpdateDefinition<TDocument> |
| 선택 사항. 업데이트 작업에 대한 구성을 지정하는 데이터 유형: UpdateOptions |
| 선택 사항. 작업을 취소하는 데 사용할 수 있는 토큰입니다. 데이터 유형: |
여러 값 업데이트
UpdateOne()
및 UpdateOneAsync()
메서드는 각각 하나의 UpdateDefinition
객체 만 허용합니다. 다음 섹션에서는 단일 메서드 호출로 여러 값을 업데이트 방법을 설명합니다.
결합된 업데이트 정의
Builders.Update.Combine()
메서드를 사용하면 여러 UpdateDefinition
객체를 결합할 수 있습니다. 이 메서드는 다음 매개변수를 허용합니다.
Parameter | 설명 |
---|---|
| 결합할 업데이트 정의의 배열 . 데이터 유형: |
Combine()
메서드는 여러 업데이트 작업을 정의하는 단일 UpdateDefinition
객체 반환합니다.
다음 코드 예시 메서드를 사용하여 Combine()
$ 설정하다 작업과 $unset 작업을 결합합니다.
var filter = Builders<Restaurant>.Filter .Eq("name", "Downtown Deli"); var combinedUpdate = Builders<Restaurant>.Update.Combine( Builders<Restaurant>.Update.Set("cuisine", "French"), Builders<Restaurant>.Update.Unset("borough") ); _restaurantsCollection.UpdateOne(filter, combinedUpdate);
var filter = Builders<Restaurant>.Filter .Eq("name", "Downtown Deli"); var combinedUpdate = Builders<Restaurant>.Update.Combine( Builders<Restaurant>.Update.Set("cuisine", "French"), Builders<Restaurant>.Update.Unset("borough") ); await _restaurantsCollection.UpdateOneAsync(filter, combinedUpdate);
파이프라인 업데이트
애플리케이션 MongoDB Server 이상에 연결되는 4.2 경우 업데이트 작업 시퀀스를 단일 집계 파이프라인 으로 결합할 수 있습니다.
업데이트 파이프라인 만들려면 Builders.Update.Pipeline()
메서드를 호출합니다. 이 메서드는 다음 매개변수를 허용합니다.
Parameter | 설명 |
---|---|
| 업데이트 파이프라인 나타내는 데이터 유형: |
Pipeline()
메서드는 여러 집계 단계를 정의하는 단일 UpdateDefinition
객체 반환합니다.
다음 코드 예시 메서드를 사용하여 Pipeline()
$ 설정하다 작업과 $unset 작업을 결합합니다.
var filter = Builders<Restaurant>.Filter .Eq("name", "Downtown Deli"); var updatePipeline = Builders<Restaurant>.Update.Pipeline( PipelineDefinition<Restaurant, Restaurant>.Create( new BsonDocument("$set", new BsonDocument("cuisine", "French")), new BsonDocument("$unset", "borough") ) ); _restaurantsCollection.UpdateOne(filter, updatePipeline);
var filter = Builders<Restaurant>.Filter .Eq("name", "Downtown Deli"); var updatePipeline = Builders<Restaurant>.Update.Pipeline( PipelineDefinition<Restaurant, Restaurant>.Create( new BsonDocument("$set", new BsonDocument("cuisine", "French")), new BsonDocument("$unset", "borough") ) ); await _restaurantsCollection.UpdateOneAsync(filter, updatePipeline);
구성 옵션
UpdateOne()
및 UpdateOneAsync()
메서드는 선택적으로 UpdateOptions
객체 매개 변수로 허용합니다. 이 인수를 사용하여 업데이트 작업을 구성할 수 있습니다.
UpdateOptions
클래스에는 다음과 같은 속성이 포함되어 있습니다.
속성 | 설명 |
---|---|
| 배열 필드 에 대한 업데이트 작업을 위해 수정할 배열 요소를 지정합니다. 자세한 내용은 MongoDB Server 매뉴얼을 참조하세요. |
| 업데이트 작업에서 문서 유효성 검사 우회할지 여부를 지정합니다. 이를 통해 스키마 유효성 검사 요구 사항을 충족하지 않는 문서(있는 경우)를 업데이트 할 수 있습니다. 스키마 유효성 검사 에 대한 자세한 내용은 MongoDB Server 매뉴얼을 참조하세요. 데이터 유형: |
| 결과를 정렬할 때 사용할 언어 데이터 정렬의 종류를 지정합니다. 데이터 정렬에 대한 자세한 내용은 MongoDB Server 매뉴얼을 참조하세요. 데이터 유형: 데이터 정렬 |
| 작업에 대해 사용자가 제공한 설명을 가져오거나 설정합니다. 자세한 내용은 MongoDB Server 매뉴얼을 참조하세요. 데이터 유형: BsonValue |
| 문서를 스캔하는 데 사용할 인덱스 를 가져오거나 설정합니다. 자세한 내용은 MongoDB Server 매뉴얼을 참조하세요. 데이터 유형: BsonValue |
| 쿼리 필터하다 와 일치하는 문서가 없는 경우 업데이트 작업에서 업서트 작업을 수행할지 여부를 지정합니다. 자세한 내용은 MongoDB Server 매뉴얼을 참조하세요. 데이터 유형: |
| let 문서 가져오거나 설정합니다. 자세한 내용은 MongoDB Server 매뉴얼을 참조하세요. 데이터 유형: BsonDocument |
반환 값
UpdateOne()
메서드는 UpdateResult
을 반환하고, UpdateOneAsync()
메서드는 Task<UpdateResult>
객체 반환합니다. UpdateResult
클래스에는 다음과 같은 속성이 포함되어 있습니다.
속성 | 설명 |
---|---|
| MongoDB에서 업데이트 작업을 승인했는지 여부를 나타냅니다. 데이터 유형: |
|
데이터 유형: |
| 업데이트 여부에 관계없이 쿼리 필터하다 와 일치하는 문서 수입니다. 데이터 유형: |
| 업데이트 작업으로 수정된 문서 수입니다. 데이터 유형: |
| 드라이버가 업서트를 수행한 경우 데이터베이스에 업서트된 문서의 ID입니다. 데이터 유형: BsonValue |
추가 정보
업데이트 작업의 실행 가능한 예제는 문서 업데이트 페이지를 참조하세요.
쿼리 필터 생성에 대해 자세히 알아보려면 쿼리 지정 가이드를 참조하세요.
API 문서
이 가이드 에 설명된 메서드 또는 유형에 대한 자세한 내용은 다음 API 문서를 참조하세요.