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

새로운 기능

이 페이지의 내용

  • 2.0의 새로운 기능
  • 1.17의 새로운 기능
  • 1.16의 새로운 기능
  • 1.15.1의 새로운 기능
  • 1.15의 새로운 기능
  • 1.14의 새로운 기능
  • 1.13의 새로운 기능
  • 1.12.1의 새로운 기능
  • 1.12의 새로운 기능

릴리스 노트

버전 간 변경 사항 및 업데이트에 학습 보려면 운전자 소스 코드 와 함께 게시된출시하다 노트 를 참조하세요.

다음 버전의 새로운 기능에 대해 알아보세요:

2.0 고 (Go) 운전자 출시하다 OIDC(OpenID Connect) 인증 지원하고, 더 부드러운 CSOT( 클라이언트 사이드 작업 시간 초과) 환경을 제공하며, API를 간소화하고, 오류 설명을 개선하고, 운전자 패키지 구조를 간소화하여 더 명확하고 관용적 고 (Go) 코드를 구현합니다. .

이 섹션에서 이러한 변경 사항에 대해 자세히 학습 보거나 GitHub의 고 (Go) 운전자 소스 코드 에 있는 v2.0 마이그레이션 가이드를 볼 수 있습니다.

중요

호환성이 손상되는 변경

고 (Go) 운전자 v2.0 출시하다 다음과 같은 호환성이 손상되는 변경이 도입되었습니다.

  • mongo.Connect() Context 매개변수를 허용하지 않습니다. 이 메서드는 옵션 객체 만 허용합니다. 이 메서드를 사용하는 예시 보려면 연결 가이드에서 연결 예제 코드를 참조하세요.

  • Cursor.SetMaxTime() 메서드의 이름이 Cursor.SetMaxAwaitTime()(으)로 변경되었습니다. 이 메서드는 테일 커서 (tailable cursor) 가 있는 고정 사이즈 컬렉션 에서 검색된 새 문서를 서버 기다리는 최대 시간을 지정합니다.

  • 작업별 시간 초과 옵션 제거. 다음 필드와 setter 메서드가 운전자 에서 제거되었습니다.

    • AggregateOptions.MaxTime, AggregateOptions.SetMaxTime()

    • ClientOptions.SocketTimeout, ClientOptions.SetSocketTimeout()

    • CountOptions.MaxTime, CountOptions.SetMaxTime()

    • DistinctOptions.MaxTime, DistinctOptions.SetMaxTime()

    • EstimatedDocumentCountOptions.MaxTime, EstimatedDocumentCountOptions.SetMaxTime()

    • FindOptions.MaxTime, FindOptions.SetMaxTime()

    • FindOneOptions.MaxTime, FindOneOptions.SetMaxTime()

    • FindOneAndReplaceOptions.MaxTime, FindOneAndReplaceOptions.SetMaxTime()

    • FindOneAndUpdateOptions.MaxTime, FindOneAndUpdateOptions.SetMaxTime()

    • GridFSFindOptions.MaxTime, GridFSFindOptions.SetMaxTime()

    • CreateIndexesOptions.MaxTime, CreateIndexesOptions.SetMaxTime()

    • DropIndexesOptions.MaxTime, DropIndexesOptions.SetMaxTime()

    • ListIndexesOptions.MaxTime, ListIndexesOptions.SetMaxTime()

    • SessionOptions.DefaultMaxCommitTime, SessionOptions.SetDefaultMaxCommitTime()

    • TransactionOptions.MaxCommitTime, TransactionOptions.SetMaxCommitTime()

    • WriteConcern.WTimeout

    대신 클라이언트 또는 컨텍스트 내에서 시간 초과를 설정하다 수 있습니다.연결 옵션 가이드 의 단일 시간 제한 설정 섹션에서 자세히 보기 .

이 출시하다 다음과 같은 개선 사항 및 수정 사항이 포함되어 있습니다.

  • OIDC(OpenID Connect) 인증 을 지원합니다. 자세한 학습 은 엔터프라이즈 인증 메커니즘 가이드 의 MONGODB-OIDC 섹션을 참조하세요.

  • 패키지 에서 GridFS API 액세스 할 수 mongo 있습니다. 이전 버전에서는 별도의 패키지 에서 GridFS 함수 액세스 할 수 gridfs 있었지만 이제 이 기능은 메인 mongo 운전자 패키지 와 병합됩니다. 자세한 학습 은 GridFS 가이드 참조하세요.

  • 모든 options 구조체의 Comment 필드 string 유형 대신 any 유형의 값을 사용합니다. 이 필드 설정하다 하려면 SetComment() 메서드를 사용하고 any 유형의 매개변수를 전달하면 됩니다.

  • 모니터링 이벤트 문서 업데이트:

    • CommandStartedEventCommandFinishedEvent 구조체에는 연결 ID 캡처하기 위한 int64 유형의 단일 ServerConnectionID 필드 있습니다.

    • PoolEvent 구조체의 ConnectionID 필드 uint64 대신 int64 유형의 값을 사용합니다.

    샘플 이벤트 문서를 보려면 모니터링 가이드를 참조하세요.

  • Session 인터페이스가 구조체로 변환됩니다. 자세한 학습 은 거래 가이드 참조하세요.

  • 메서드는 지정된 유형으로 디코딩될 수 있는 구조체를 반환합니다. 자세한 Distinct() 학습 은 고유 값 조회 가이드 참조하세요.

  • IndexView.DropOne() 메서드는 오류가 있는 경우 오류만 반환합니다. 이전 버전에서는 이 메서드가 삭제된 인덱스 수가 포함된 서버 응답도 반환했습니다. 자세한 학습 은 인덱스 가이드 의 인덱스 제거 섹션을 참조하세요.

  • 패키지 의 유형에 대한 options 빌더 패턴 이 업데이트되었습니다. 패턴 setter 함수의 일부를 유지하므로 데이터를 options 객체 에 직접 설정하다 수 없습니다. 이 업데이트 일반적으로 옵션을 만들고 사용하는 방법을 변경하지 않습니다. 자세한 학습 은 JIRA 티켓 기능 참조하세요.

  • 쓰기 (write) 작업이 승인되지 않은 경우 운전자 더 이상 mongo.ErrUnacknowledgedWrite 센티널 오류를 지원하지 않습니다. 서버 쓰기 (write) 작업을 승인했는지 확인하려면 쓰기 (write) 메서드가 반환한 결과 구조체에서 Acknowledged 속성 액세스 해야 합니다.

    다음 예시 삽입 작업의 승인을 확인하는 방법을 보여줍니다.

    res, err := coll.InsertOne(context.TODO(), bson.D{{"x", 2}})
    if err != nil {
    panic(err)
    }
    fmt.Print(res.Acknowledged)
  • 인스턴스 만들고 유형의 TransactionOptions 메서드에 인스턴스 전달하여 지정된 세션에서 실행 트랜잭션에 대한 옵션을 설정하다 SetDefaultTransactionOptions()SessionOptions 있습니다. 자세히 학습 트랜잭션 가이드 의 세션 및 트랜잭션 옵션 섹션을 참조하세요.

  • Collection.Clone() 메서드는 오류를 반환하지 않습니다.

  • 메서드의 canonical 매개변수 UnmarshalExtJSON() canonicalOnly canonicalOnly true이름을 로 변경합니다.false 을(를)(으)로 설정하다 하고 확장 JSON 표준 모드 에서 마셜링되지 않은 경우 메서드는 오류를 반환합니다. 로 설정하다 하면 메서드는 표준 또는 완화된 확장 JSON 언마셜링할 수 있습니다. 자세한 학습 UnmarshalExtJSON() API 설명서를 참조하세요.

중요

v1.17 은(는) 최종 계획된 1.x 버전 출시하다 입니다. 이 버전은 보안 및 버그 수정을 받지만 향후 개발 및 기능은 운전자 의 2.x 버전에만 포함됩니다.

1.17 Go 드라이버 릴리스에는 다음과 같은 개선 및 수정 사항이 포함되어 있습니다.

  • OIDC(OpenID Connect) 인증 에 대한 지원 을 추가합니다. 학습 내용은 엔터프라이즈 인증 메커니즘 가이드 의 MONGODB-OIDC 섹션을 참조하세요.

  • Queryable Encryption (QE) 범위 쿼리에 대한 지원 을 추가합니다. 이 기능 을 사용하려면 앱 이 MongoDB Server 8.0 이상에 연결되어야 합니다. QE 범위 쿼리에 대한 자세한 내용은 MongoDB Server 매뉴얼의 Queryable Encryption 을 참조하세요.

  • 클라이언트 대량 쓰기 (write) 기능 을 제외하고 MongoDB Server 8.0 에 대한 지원 을 추가합니다.

  • 이름 대신 키 사양을 사용하여 인덱스를 삭제할 수 있도록 DropOneWithKey()DropWithKey() 메서드를 포함하도록 IndexView 유형을 확장합니다.

이 버전의 변경 사항에 대한 자세한 내용은 v1.17 출시하다 노트 를 Github 참조하세요. 에서 .

1.16 Go 드라이버 릴리스에는 다음과 같은 개선 및 수정 사항이 포함되어 있습니다.

이러한 변경 사항에 대한 자세한 내용은 v 출시하다 노트 를1.16 참조하세요. Github 에서 .

1.15.1 고 (Go) 운전자 패치 출시하다 에는 다음과 같은 개선 사항 및 수정 사항이 포함됩니다.

  • 복제본 세트 클러스터 와의 연결을 끊으면 rttMonitor 연결이 남을 수 있는 연결 누수를 수정합니다.

  • 클라이언트 전체 제한 시간 및 작업 제한 시간이 설정하다 경우 읽기 및 집계 작업에 maxTimeMS 값을 수동으로 지정할 수 있는 지원 을 추가합니다.

  • 변경 스트림 에서 호출할 수 있는 RemainingBatchLength() 메서드를 추가합니다.

이러한 변경 사항에 대한 자세한 내용은 v 출시하다 노트 를1.15.1 참조하세요. Github 에서 .

1.15 Go 드라이버 릴리스에는 다음과 같은 개선 및 수정 사항이 포함되어 있습니다.

  • timeoutMS 연결 옵션을 지정하거나 SetTimeout()을 호출하여 클라이언트 전체 시간 제한을 설정하면 연결 이탈을 완화할 수 있습니다. 시간 제한이 설정되면 드라이버는 작업 시간이 초과된 후 연결을 재사용하려고 시도하고 최대 1초 동안 기다렸다가 연결을 재사용할 수 있는지 확인한 후 연결을 닫습니다.

  • 연결 풀 이벤트에는 체크아웃 기간 및 연결을 설정하는 데 걸린 총 시간을 측정하는 Duration 필드가 포함됩니다.

1.14 Go 드라이버 릴리스에는 다음과 같은 개선 및 수정 사항이 포함되어 있습니다.

  • Go 1.18 이전 버전은 더 이상 지원되지 않습니다.

  • 하트비트 시간 초과가 발생하면 진행 중인 작업이 선제적으로 취소됩니다.

  • "mongodb+srv://" 접두사를 포함하는 연결 문자열은 SRV 호스트 이름에 대문자를 포함할 수 있습니다.

1.13 Go 드라이버 릴리스에는 다음과 같은 개선 및 수정 사항이 포함되어 있습니다.

  • 서버 선택 및 SDAM에 대한 로깅입니다. 로깅에 대해 자세히 알아보려면 로깅 설명서를 참조하세요.

  • 프로그래밍 방식으로 검색 인덱스를 관리할 수 있는 Collection 유형의 메서드입니다.

  • event.CommandStartedEventevent.CommandFinishedEvent 이벤트는 DatabaseName 필드를 반환합니다. 이 필드는 명령 로깅 아날로그에도 포함되어 있습니다.

  • 샤딩된 토폴로지에서 실패한 쿼리를 재시도할 서버를 선택할 때 드라이버는 초기 시도에 사용된 서버를 제외합니다. 대신 적합한 mongos 인스턴스가 두 개 이상 있는 경우 드라이버는 임의로 하나를 선택합니다. 비정상적인 인스턴스는 자동으로 선택에서 제외됩니다.

  • 스트리밍 SDAM은 AWS Lambda 및 유사한 서비스형 기능(FaaS) 플랫폼에서 기본적으로 비활성화되어 있습니다. serverMonitoringMode URI 옵션을 사용하여 모니터링을 활성화할 수 있습니다.

1.12 Go 드라이버 릴리스에는 다음과 같은 개선 및 수정 사항이 포함되어 있습니다.

  • 드라이버는 세션을 종료할 때 연결을 해제합니다. 이렇게 하면 사용자가 로드 밸런서에 연결된 상태에서 트랜잭션을 실행할 때 연결이 유출되는 것을 방지할 수 있습니다.

  • bson.RawValue 유형을 잘못된 유형으로 언마셜링하거나 ReadConcern 인스턴스의 nil 포인터를 마셜링할 때 드라이버에서 런타임 오류가 발생하지 않습니다.

  • options.LogComponentAll을 로그 구성 요소로 올바르게 설정하면 모든 구성 요소에 대한 로그가 게시됩니다.

중요

사용 중단 안내

  • mongo.NewClient()client.Connect() 메서드는 더 이상 사용되지 않습니다. mongo.Connect() 메서드를 사용하여 클라이언트를 만들고 한 번의 호출로 연결할 수 있습니다.

1.12의 새로운 기능. Go 드라이버 릴리스에는 다음이 포함됩니다.

이 드라이버 버전은 Queryable Encryption(QE)에 대한 지원을 추가합니다. QE 기능을 사용하기 위한 요구 사항에 대해 자세히 알아보려면 Queryable Encryption 드라이버 호환성 표를 참조하세요.

ClientEncryption.CreateEncryptedCollection() 메서드는 암호화된 컬렉션을 새로 만들 때 데이터 암호화 키를 자동으로 생성합니다. QE 기능을 사용하는 방법을 알아보려면 서버 매뉴얼의 Quick Start를 참조하세요.

이제 LogSink 로깅 인터페이스를 사용하여 연결 관리 및 명령 실행 이벤트를 기록할 수 있습니다.

자세히 알아보려면 로깅 기초 가이드를 참조하세요.

이 드라이버 버전은 options 패키지에 드라이버가 BSON의 마셜링 및 언마셜링 방법을 지정하는 기능을 추가합니다.

다음 예시는 Client에서 BSON 옵션을 설정하는 방법을 보여줍니다. 옵션은 다음과 같은 동작을 지정합니다.

  • bson 구조체 태그가 없으면 드라이버는 json 구조체 태그로 대체됩니다.

  • 드라이버는 nil Go 맵 유형을 빈 BSON 문서로 마셜링합니다.

  • 드라이버는 nil Go 슬라이스 유형을 빈 BSON 배열로 마셜링합니다.

bsonOpts := &options.BSONOptions{
UseJSONStructTags: true,
NilMapAsEmpty: true,
NilSliceAsEmpty: true,
}
options.Client().SetBSONOptions(bsonOpts)

BSONOptions 유형을 지정하고 구현하는 방법에 대한 전체 예는 API 문서를 참조하세요.

이 드라이버 버전은 WriteConcern API를 간소화합니다. 변경 사항에 대해 자세히 알아보려면 쓰기 고려를 참조하세요.

  • EKS에서 AWS IAM 역할로 인증을 지원합니다.

  • 커서를 통해 반복할 때 가져오는 배치의 크기를 지정할 수 있도록 Cursor.SetBatchSize() 메서드가 추가되었습니다.

  • MarshalValue() 메서드로 마샬링된 BSON 값의 ummarshalling을 허용하는 UnmarshalValue() 메서드가 추가되었습니다.

돌아가기

빠른 참조