Docs Menu
Docs Home
/ / /
C#/.NET
/ / /

문서 교체

이 페이지의 내용

  • 개요
  • 샘플 데이터
  • 하나의 문서 바꾸기
  • 대체 작업 사용자 지정
  • 반환 값
  • API 문서

참고

메서드 오버로드

이 페이지의 많은 메서드에는 여러 오버로드가 있습니다. 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; }
[BsonElement("restaurant_id")]
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; }
[BsonElement("coord")]
public double[] Coordinates { get; set; }
public string Street { get; set; }
[BsonElement("zipcode")]
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
설명

filter

데이터 유형: FilterDefinition<TDocument>

replacement

새 문서에 삽입할 필드와 값을 지정하는 대체 문서입니다. 컬렉션의 문서가 C# 클래스에 매핑된 경우 대체 문서는 이 클래스의 인스턴스가 될 수 있습니다.

데이터 유형: TDocument

options

선택 사항. An 인스턴스 of the ReplaceOptions class that specifies the configuration for the replace operation. The 기본값 value null is.

데이터 유형: ReplaceOptions

cancellationToken

선택 사항. 작업을 취소하는 데 사용할 수 있는 토큰입니다.

데이터 유형: 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 클래스에는 다음과 같은 속성이 포함되어 있습니다.

속성
설명

BypassDocumentValidation

데이터 유형: bool?

Collation

데이터 유형: 데이터 정렬

Comment

작업에 대해 사용자가 제공한 설명을 가져오거나 설정합니다. See the MongoDB Server manual for more information.

데이터 유형: BsonValue

Hint

데이터 유형: BsonValue

IsUpsert

데이터 유형: bool

Let

데이터 유형: 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 클래스에는 다음과 같은 속성이 포함되어 있습니다.

속성
설명

IsAcknowledged

MongoDB에서 대체 작업을 승인했는지 여부를 나타냅니다.

데이터 유형: bool

IsModifiedCountAvailable

ReplaceOneResult에서 대체된 기록 수를 읽을 수 있는지 여부를 나타냅니다.

데이터 유형: bool

MatchedCount

쿼리 필터가 대체되었는지 여부에 관계없이 쿼리 필터와 일치하는 문서 수입니다.

데이터 유형: long

ModifiedCount

대체 작업으로 바뀐 문서 수입니다.

데이터 유형: long

UpsertedId

드라이버가 업서트를 수행한 경우 데이터베이스에 업서트된 문서의 ID입니다.

데이터 유형: BsonValue

돌아가기

배열