AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.
Docs Menu

여러 문서의 필드 업데이트

이 페이지에서는 MongoDB .NET/ C# 드라이버 사용하여 여러 MongoDB 문서의 필드를 업데이트 방법을 학습 수 있습니다. 이 페이지에서는 필드에 수행하려는 업데이트 작업을 지정하는 UpdateDefinition<TDocument> 객체를 생성하는 방법을 설명합니다. 이러한 객체를 다수 업데이트 페이지에 설명된 업데이트 메서드에 전달할 수 있습니다.

The .NET/C# Driver supports the field update operators described in the MongoDB Server manual. To specify an update operation, call the corresponding method from the Builders.Update property. The following sections describe these methods in more detail.

참고

메서드 오버로드

이 페이지의 많은 메서드에는 여러 개의 오버로드가 있습니다. 이 가이드 의 예제에서는 각 메서드에 대한 정의를 하나만 보여줍니다. 사용 가능한 오버로드에 대한 자세한 내용은 API 설명서를 참조하세요.

이 가이드의 예에서는 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 cluster 생성하고 이 샘플 데이터를 로드하는 방법을 학습 .NET/ C# 드라이버 시작하기 를 참조하세요.

필드 값을 특정 양만큼 증가시키려면 Builders.Update.Inc() 메서드를 호출합니다. 이 메서드는 다음 매개변수를 허용합니다.

Parameter
설명

field

증가시킬 필드 지정하는 표현식 입니다.

데이터 유형: Expression<Func<TDocument, TField>>

value

필드 증가시킬 정도입니다.

데이터 유형: TField

다음 코드 예시 Inc() 메서드를 사용하여 일치하는 모든 문서에서 Grades 배열 의 첫 번째 GradeEntry 객체 에 있는 Score 값을 2 만큼 증가시킵니다.

var filter = Builders<Restaurant>.Filter.Eq("name", "Shake Shack");
var update = Builders<Restaurant>.Update
.Inc(restaurant => restaurant.Grades[0].Score, 2);
var result = _restaurantsCollection.UpdateMany(filter, update);
var filter = Builders<Restaurant>.Filter.Eq("name", "Shake Shack");
var update = Builders<Restaurant>.Update
.Inc(restaurant => restaurant.Grades[0].Score, 2);
var result = await _restaurantsCollection.UpdateManyAsync(filter, update);

필드 값에 특정 금액을 곱하려면 Builders.Update.Mul() 메서드를 호출합니다. 이 메서드는 다음 매개변수를 허용합니다.

Parameter
설명

field

업데이트 할 필드 지정하는 표현식 입니다.

데이터 유형: Expression<Func<TDocument, TField>>

value

필드 에 곱할 금액입니다.

데이터 유형: TField

다음 코드 예시 Mul() 메서드를 사용하여 일치하는 모든 문서에 있는 Grades 배열 의 첫 번째 GradeEntry 객체 에 있는 Score 값에 1.25 를 곱합니다.

var filter = Builders<Restaurant>.Filter.Eq("name", "Shake Shack");
var update = Builders<Restaurant>.Update
.Mul(restaurant => restaurant.Grades[0].Score, 1.25f);
var result = _restaurantsCollection.UpdateMany(filter, update);
var filter = Builders<Restaurant>.Filter.Eq("name", "Shake Shack");
var update = Builders<Restaurant>.Update
.Mul(restaurant => restaurant.Grades[0].Score, 1.25f);
var result = await _restaurantsCollection.UpdateManyAsync(filter, update);

필드 이름을 바꾸려면 Builders.Update.Rename() 메서드를 호출합니다. 이 메서드는 다음 매개변수를 허용합니다.

Parameter
설명

field

이름을 바꿀 필드 지정하는 표현식 입니다.

데이터 유형: Expression<Func<TDocument, TField>>

newName

필드 의 새 이름입니다.

데이터 유형: string

다음 코드 예시 Rename() 메서드를 사용하여 일치하는 모든 문서에서 Address 필드 이름을 location(으)로 변경합니다.

var filter = Builders<Restaurant>.Filter.Eq("name", "Shake Shack");
var update = Builders<Restaurant>.Update
.Rename(restaurant => restaurant.Address, "location");
var result = _restaurantsCollection.UpdateMany(filter, update);
var filter = Builders<Restaurant>.Filter.Eq("name", "Shake Shack");
var update = Builders<Restaurant>.Update
.Rename(restaurant => restaurant.Address, "location");
var result = await _restaurantsCollection.UpdateManyAsync(filter, update);

참고

앞의 코드 예제에서는 location 필드 이름을 사용하는데, 이는 Restaurant 클래스의 속성 이름이 아닌 MongoDB 의 필드 이름 명명 체계와 일치하기 때문입니다.

필드 값을 특정 값으로 설정하다 하려면 Builders.Update.Set() 메서드를 호출합니다. 이 메서드는 다음 매개변수를 허용합니다.

Parameter
설명

field

업데이트 할 필드 지정하는 표현식 입니다.

데이터 유형: Expression<Func<TDocument, TField>>

value

필드 설정하다 값입니다.

데이터 유형: TField

다음 코드 예시 Set() 메서드를 사용하여 일치하는 모든 문서에서 recommended 필드 이름을 true(으)로 변경합니다.

var filter = Builders<Restaurant>.Filter.Eq("name", "Shake Shack");
var update = Builders<Restaurant>.Update
.Set("recommended", true);
var result = _restaurantsCollection.UpdateMany(filter, update);
var filter = Builders<Restaurant>.Filter.Eq("name", "Shake Shack");
var update = Builders<Restaurant>.Update
.Set("recommended", true);
var result = await _restaurantsCollection.UpdateManyAsync(filter, update);

참고

앞의 코드 예제에서는 recommended 필드 이름을 사용하는데, 이는 Restaurant 클래스의 속성 이름이 아닌 MongoDB 의 필드 이름 명명 체계와 일치하기 때문입니다.

지정된 값이 필드 의 현재 값보다 경우에만 필드 값을 지정된 값으로 업데이트 하려면 메서드를 Builders.Update.Max() 호출합니다. 이 메서드는 다음 매개변수를 허용합니다.

Parameter
설명

field

업데이트 할 필드 지정하는 표현식 입니다.

데이터 유형: Expression<Func<TDocument, TField>>

value

필드 설정하다 값입니다.

데이터 유형: TField

지정된 값이 필드 의 현재 값보다 작은 경우에만 필드 값을 지정된 값으로 업데이트 하려면 메서드를 Builders.Update.Min() 호출합니다. 이 메서드는 다음 매개변수를 허용합니다.

Parameter
설명

field

업데이트 할 필드 지정하는 표현식 입니다.

데이터 유형: Expression<Func<TDocument, TField>>

value

필드 설정하다 값입니다.

데이터 유형: TField

다음 코드 예시 Max() 메서드를 사용하여 첫 번째 GradeEntry 객체 의 Score 필드 일치하는 모든 문서의 20 와 현재 값 중 더 큰 값으로 설정하다 .

var filter = Builders<Restaurant>.Filter.Eq("name", "Shake Shack");
var update = Builders<Restaurant>.Update
.Max(restaurant => restaurant.Grades[0].Score, 20);
var result = _restaurantsCollection.UpdateMany(filter, update);
var filter = Builders<Restaurant>.Filter.Eq("name", "Shake Shack");
var update = Builders<Restaurant>.Update
.Max(restaurant => restaurant.Grades[0].Score, 20);
var result = await _restaurantsCollection.UpdateManyAsync(filter, update);

문서 동일한 작업으로 업서트된 경우에만 필드 값을 설정하다 하려면 Builders.Update.SetOnInsert() 메서드를 호출합니다. 이 메서드는 다음 매개변수를 허용합니다.

Parameter
설명

field

업데이트 할 필드 지정하는 표현식 입니다.

데이터 유형: Expression<Func<TDocument, TField>>

value

필드 설정하다 값입니다.

데이터 유형: TField

다음 코드 예시 SetOnInsert() 메서드를 사용하여 일치하는 모든 문서에서 recommended 필드 true(으)로 설정하다 .

var filter = Builders<Restaurant>.Filter.Eq("name", "Patty's Pies");
var update = Builders<Restaurant>.Update
.SetOnInsert("recommended", true);
var result = _restaurantsCollection.UpdateMany(
filter, update, new UpdateOptions { IsUpsert = true }
);
var filter = Builders<Restaurant>.Filter.Eq("name", "Patty's Pies");
var update = Builders<Restaurant>.Update
.SetOnInsert("recommended", true);
var result = await _restaurantsCollection.UpdateManyAsync(
filter, update, new UpdateOptions { IsUpsert = true }
);

참고

앞의 코드 예제에서는 recommended 필드 이름을 사용하는데, 이는 Restaurant 클래스의 속성 이름이 아닌 MongoDB 의 필드 이름 명명 체계와 일치하기 때문입니다.

문서 업서트에 대해 자세히 학습하려면 다수 업데이트 가이드의 구성 옵션 을 참조하세요.

필드 값을 현재 날짜 및 시간으로 설정하다 하려면 Builders.Update.CurrentDate() 메서드를 호출합니다. 이 메서드는 다음 매개변수를 허용합니다.

Parameter
설명

field

업데이트 할 필드 지정하는 표현식 입니다.

데이터 유형: Expression<Func<TDocument, TField>>

type

UpdateDefinitionCurrentDateType 열거형 에 정의된 날짜 및 시간 형식입니다. 기본값 은 null입니다.

데이터 유형: UpdateDefinitionCurrentDateType?

다음 코드 예시 CurrentDate() 메서드를 사용하여 일치하는 모든 문서에서 첫 번째 GradeEntry 객체 의 Date 필드 현재 날짜로 업데이트 .

var filter = Builders<Restaurant>.Filter.Eq("name", "Shake Shack");
var update = Builders<Restaurant>.Update
.CurrentDate(restaurant => restaurant.Grades[0].Date);
var result = _restaurantsCollection.UpdateMany(filter, update);
var filter = Builders<Restaurant>.Filter.Eq("name", "Shake Shack");
var update = Builders<Restaurant>.Update
.CurrentDate(restaurant => restaurant.Grades[0].Date);
var result = await _restaurantsCollection.UpdateManyAsync(filter, update);

문서 에서 필드 제거 하려면 Builders.Update.Unset() 메서드를 호출합니다. 이 메서드는 다음 매개변수를 허용합니다.

Parameter
설명

field

제거 할 필드 지정하는 표현식 입니다.

데이터 유형: Expression<Func<TDocument, TField>>

다음 코드 예시 Unset() 메서드를 사용하여 일치하는 모든 문서에서 Cuisine 필드 제거 .

var filter = Builders<Restaurant>.Filter.Eq("name", "Shake Shack");
var update = Builders<Restaurant>.Update
.Unset(restaurant => restaurant.Cuisine);
var result = _restaurantsCollection.UpdateMany(filter, update);
var filter = Builders<Restaurant>.Filter.Eq("name", "Shake Shack");
var update = Builders<Restaurant>.Update
.Unset(restaurant => restaurant.Cuisine);
var result = await _restaurantsCollection.UpdateManyAsync(filter, update);

이 가이드 에 설명된 메서드에 대한 자세한 내용은 다음 API 설명서를 참조하세요.