문서 교체
개요
참고
메서드 오버로드
이 페이지의 많은 메서드에는 여러 오버로드가 있습니다. The examples in this 가이드 show only one definition of each method. For more information about the available overloads, see the API documentation.
샘플 데이터
이 가이드의 예에서는 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 클러스터를 생성하고 이 샘플 데이터를 로드하는 방법을 알아보세요.
하나의 문서 바꾸기
To replace a 문서 in a 컬렉션, call the ReplaceOne()
or ReplaceOneAsync()
method. 이러한 메서드는 다음 매개변수를 허용합니다.
Parameter | 설명 |
---|---|
| 데이터 유형: FilterDefinition<TDocument> |
| 새 문서에 삽입할 필드와 값을 지정하는 대체 문서입니다. 컬렉션의 문서가 C# 클래스에 매핑된 경우 대체 문서는 이 클래스의 인스턴스가 될 수 있습니다. 데이터 유형: |
| 선택 사항. An 인스턴스 of the 데이터 유형: ReplaceOptions |
| 선택 사항. 작업을 취소하는 데 사용할 수 있는 토큰입니다. 데이터 유형: CancellationToken |
The following code 예시 demonstrates how to perform a replace operation. 이 코드는 다음 단계를 수행합니다.
Synchronous 또는 Asynchronous 탭을 선택하여 해당 코드를 확인합니다.
// Creates a filter for all restaurant documents that have a "cuisine" value of "Pizza" var filter = Builders<Restaurant>.Filter .Eq(r => r.Cuisine, "Pizza"); // Generates a new restaurant document Restaurant newPizzaRestaurant = new() { Name = "Mongo's Pizza", Cuisine = "Pizza", Address = new Address() { Street = "Pizza St", ZipCode = "10003" }, Borough = "Manhattan", }; // Replaces the existing restaurant document with the new document return _restaurantsCollection.ReplaceOne(filter, newPizzaRestaurant);
// Creates a filter for all restaurant documents that have a "cuisine" value of "Pizza" var filter = Builders<Restaurant>.Filter .Eq(r => r.Cuisine, "Pizza"); // Generates a new restaurant document Restaurant newPizzaRestaurant = new() { Name = "Mongo's Pizza", Cuisine = "Pizza", Address = new Address() { Street = "Pizza St", ZipCode = "10003" }, Borough = "Manhattan", }; // Asynchronously replaces the existing restaurant document with the new document return await _restaurantsCollection.ReplaceOneAsync(filter, newPizzaRestaurant);
중요
_id
필드의 값은 변경할 수 없습니다. 대체 문서에서 _id
필드 값을 지정하는 경우 기존 문서의 _id
값과 일치해야 합니다.
대체 작업 사용자 지정
ReplaceOptions
클래스에는 다음과 같은 속성이 포함되어 있습니다.
속성 | 설명 |
---|---|
| 데이터 유형: |
| 데이터 유형: 데이터 정렬 |
| 작업에 대해 사용자가 제공한 설명을 가져오거나 설정합니다. See the MongoDB Server manual for more information. 데이터 유형: BsonValue |
| 데이터 유형: BsonValue |
| 데이터 유형: |
| 데이터 유형: BsonDocument |
// Creates a filter for all restaurant documents that have a "cuisine" value of "Pizza" var filter = Builders<Restaurant>.Filter .Eq(r => r.Cuisine, "Pizza"); // Generates a new restaurant document Restaurant newPizzaRestaurant = new() { Name = "Mongo's Pizza", Cuisine = "Pizza", Address = new Address() { Street = "Pizza St", ZipCode = "10003" }, Borough = "Manhattan", }; var options = new ReplaceOptions { BypassDocumentValidation = true }; // Replaces the existing restaurant document with the new document return _restaurantsCollection.ReplaceOne(filter, newPizzaRestaurant, options);
// Creates a filter for all restaurant documents that have a "cuisine" value of "Pizza" var filter = Builders<Restaurant>.Filter .Eq(r => r.Cuisine, "Pizza"); // Generates a new restaurant document Restaurant newPizzaRestaurant = new() { Name = "Mongo's Pizza", Cuisine = "Pizza", Address = new Address() { Street = "Pizza St", ZipCode = "10003" }, Borough = "Manhattan", }; var options = new ReplaceOptions { BypassDocumentValidation = true }; // Asynchronously replaces the existing restaurant document with the new document return await _restaurantsCollection.ReplaceOneAsync(filter, newPizzaRestaurant, options);
반환 값
The ReplaceOne()
method returns a ReplaceOneResult
객체, and the ReplaceOneAsync()
method returns a Task<ReplaceOneResult>
객체. ReplaceOneResult
클래스에는 다음과 같은 속성이 포함되어 있습니다.
속성 | 설명 |
---|---|
| MongoDB에서 대체 작업을 승인했는지 여부를 나타냅니다. 데이터 유형: |
|
데이터 유형: |
| 쿼리 필터가 대체되었는지 여부에 관계없이 쿼리 필터와 일치하는 문서 수입니다. 데이터 유형: |
| 대체 작업으로 바뀐 문서 수입니다. 데이터 유형: |
| 드라이버가 업서트를 수행한 경우 데이터베이스에 업서트된 문서의 ID입니다. 데이터 유형: BsonValue |