Docs Menu
Docs Home
/ / /
Go 드라이버
/ / /

문서 수정

이 페이지의 내용

  • 개요
  • 참고 사항 _id
  • Update
  • 매개변수
  • Return Values
  • 바꾸기
  • 매개변수
  • Return Values
  • 추가 정보
  • API 문서

이 가이드에서는 업데이트바꾸기 작업을 사용하여 MongoDB에서 문서를 수정하는 방법을 설명합니다.

업데이트 작업은 지정한 필드를 변경하고 다른 필드와 값은 변경하지 않은 상태로 유지합니다. 바꾸기 작업은 문서에서 _id 를 제외한 모든 기존 필드를 제거하고 삭제된 필드를 지정한 새 필드 및 값으로 대체합니다.

MongoDB에서 문서를 수정하는 모든 메서드는 동일한 패턴을 따릅니다.

메서드 서명 변경

참고

자리 표시자

changeX (은)는 실제 메서드가 아닌 자리 표시자입니다.

이 패턴은 다음을 수행해야 합니다.

  • 수정할 하나 이상의 문서와 일치하도록 쿼리 필터하다 를 지정합니다.

  • 필드 및 값 변경 사항을 지정합니다.

  • 메서드 동작을 수정해야 하는 경우 옵션을 지정합니다.

운전자 는 다음과 같은 방법으로 문서를 수정합니다.

  • UpdateByID()

  • UpdateOne()

  • UpdateMany()

  • ReplaceOne()

  • BulkWrite() (이 가이드 에서는 논의되지 않음)

  • FindOneAndUpdate() (이 가이드 에서는 논의되지 않음)

  • FindOneAndReplace() (이 가이드 에서는 논의되지 않음)

MongoDB collection의 각 문서에는 고유하고 변경할 수 없는 _id 필드가 있습니다. 업데이트 및 바꾸기 작업을 사용하여 _id 필드를 변경할 수 없습니다. 이 필드를 변경하려고 하면 update 및 replace 메서드가 WriteError를 반환합니다.

단일 문서를 업데이트하려면 UpdateOne() 또는 UpdateByID() 메서드를 사용합니다.

여러 문서를 업데이트 하려면 UpdateMany() 메서드를 사용합니다.

각 메서드는 하나 이상의 업데이트 연산자 를 포함하는 업데이트 문서 를 사용합니다. 업데이트 연산자는 수행할 업데이트 유형을 지정합니다. 업데이트 문서에는 변경 사항을 설명하는 필드와 값도 포함되어 있습니다. 업데이트 문서는 다음과 같은 포맷을 사용합니다.

bson.D{{"<update operator>", bson.D{{"<field>", <value>},
{"<field>", <value>}, ... }},
{"<update operator>", ... }, ... }

업데이트 연산자 및 설명의 전체 목록은 MongoDB 서버 매뉴얼을 참조하세요.

참고

업데이트 작업의 집계 파이프라인

MongoDB Server 버전 4.2 이상을 사용하는 경우 업데이트 작업에서 집계 단계의 하위 집합으로 구성된 집계 파이프라인을 사용할 수 있습니다. 집계 파이프라인에서 MongoDB 가 지원하는 집계 단계에 학습 보려면 집계 파이프라인으로 집계 수행에 대한 튜토리얼을 참조하세요.

UpdateOne(), UpdateByID()UpdateMany() 작업이 성공한 경우 업데이트 작업에 대한 정보가 포함된 UpdateResult 유형을 반환합니다. UpdateResult 유형에는 다음과 같은 속성이 포함되어 있습니다.

속성
설명
MatchedCount
필터하다 와 일치하는 문서 수
ModifiedCount
작업으로 수정된 문서 수입니다.
UpsertedCount
작업에 의해 업서트된 문서 수입니다.
UpsertedID
업서트된 문서의 _id(아무 것도 없는 경우 nil)

여러 문서가 UpdateOne()에 전달된 쿼리 필터와 일치하는 경우 메서드는 일치하는 첫 번째 문서를 선택하여 업데이트합니다. 쿼리 필터와 일치하는 문서가 없는 경우 업데이트 작업은 변경되지 않습니다.

쿼리 필터하다 와 일치하는 문서가 없는 경우 새 문서 를 삽입하는 방법을 학습 보려면 업서트 가이드 를 참조하세요.

다음 문서에서는 직원에 대해 설명합니다.

{
"_id" : 2158,
"name" : "Mary Shelley",
"department" : "Marketing",
"role" : "Marketing Analyst",
"bonus" : 2500,
...
}

다음 예시 에서는 UpdateByID() 메서드를 사용하여 다음을 수행합니다.

  • _id 값이 2158인 문서를 일치시킵니다.

  • name 필드를 "Mary Wollstonecraft Shelley"로 설정하고 role 필드를 "Marketing Director"로 설정합니다.

  • bonus 필드의 값을 2000만큼 증가시킵니다.

filter := bson.D{{"_id", 2158}}
update := bson.D{{"$set", bson.D{{"name", "Mary Wollstonecraft Shelley"},
{"role", "Marketing Director"}}}, {"$inc", bson.D{{"bonus", 2000}}}}
result, err := collection.UpdateOne(context.TODO(), filter, update)
fmt.Printf("Documents matched: %v\n", result.MatchedCount)
fmt.Printf("Documents updated: %v\n", result.ModifiedCount)
Documents matched: 1
Documents updated: 1

다음은 이전 업데이트 작업의 결과로 업데이트된 문서를 보여줍니다.

{
"_id" : 2158,
"name" : "Mary Wollstonecraft Shelley",
"department" : "Marketing",
"role" : "Marketing Director",
"bonus" : 4500,
...
}

단일 문서를 바꾸려면 ReplaceOne() 메서드를 사용합니다.

ReplaceOne() 은 기존 문서를 대체하려는 문서인 대체 문서 를 기대합니다. 대체 문서는 다음과 같은 포맷을 사용합니다.

bson.D{{"<field>", "<value>"}, {"<field>", "<value>"}, ... }

ReplaceOne() 작업이 성공하면 대체 작업에 대한 정보가 포함된 UpdateResult 유형을 반환합니다. UpdateResult 유형에는 다음과 같은 속성이 포함되어 있습니다.

속성
설명
MatchedCount
필터하다 와 일치하는 문서 수
ModifiedCount
작업으로 수정된 문서 수입니다.
UpsertedCount
작업에 의해 업서트된 문서 수입니다.
UpsertedID
업서트된 문서의 _id(아무 것도 없는 경우 nil)

여러 문서가 ReplaceOne()에 전달된 쿼리 필터와 일치하는 경우 메서드는 일치하는 첫 번째 문서를 선택하여 대체합니다. 쿼리 필터와 일치하는 문서가 없는 경우 바꾸기 작업이 실패합니다.

다음 문서에서는 주방 용품에 대해 설명합니다.

{
"_id" : 2056,
"item" : "Mug",
"brand" : "Simply Ceramics",
"price" : 2.99,
"material" : "Glass"
}

다음 예시에서는 ReplaceOne() 메서드를 사용하여 이 문서를 값이 'Cup'인 item 필드와 값이 107인 quantity 필드를 포함하는 문서로 대체합니다.

filter := bson.D{{"_id", 2056}}
replacement := bson.D{{"item", "Cup"}, {"quantity", 107}}
result, err := collection.ReplaceOne(context.TODO(), filter, replacement)
fmt.Printf("Documents matched: %v\n", result.MatchedCount)
fmt.Printf("Documents replaced: %v\n", result.ModifiedCount)
Documents matched: 1
Documents replaced: 1

대체된 문서에는 다음과 같이 대체 문서의 내용과 변경할 수 없는 _id 필드 등이 있습니다.

{
"_id" : 2056,
"item" : "Cup",
"quantity" : 107
}

업데이트 및 대체 작업의 실행 가능한 예는 다음 사용 예시를 참조하세요.

언급된 작업에 대해 자세히 알아보려면 다음 가이드를 참조하세요.

배열 요소 업데이트에 대해 자세히 알아보려면 문서의 배열 업데이트를 참조하세요.

이 가이드에서 설명하는 메서드나 유형에 대해 자세히 알아보려면 다음 API 설명서를 참조하세요.

돌아가기

삭제