개요
이 페이지에서는 고 (Go) 운전자 에서 사용할 수 있는 연결 옵션과 이를 MongoDB 연결에 적용 방법을 설명합니다.
연결 옵션 지정 방법
다음 섹션에서는 연결 문자열 또는 ClientOptions 구조체를 사용하여 연결 옵션을 지정하는 방법을 설명합니다.
연결 문자열 사용
ClientOptions 구조체를 Connect() 메서드에 전달하여 연결 문자열 에 연결 옵션을 지정할 수 있습니다. 연결 문자열 에서 연결 옵션을 <name>=<value> 쌍으로 포함할 수 있습니다. 다음 예시 에서 연결 문자열 값이 60000 밀리초인 connectTimeoutMS 옵션과 true 값이 있는 tls 옵션이 포함되어 있습니다.
const uri = "mongodb+srv://localhost:27017/?connectTimeoutMS=60000&tls=true" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
ClientOptions 구조체 사용
연결 옵션을 ClientOptions 구조체에 연결하여 연결 설정을 구성할 수도 있습니다. 이러한 방식으로 연결을 구성하면 런타임에 설정을 더 쉽게 변경할 수 있고, 컴파일 중에 오류를 포착하는 데 도움이 되며, 연결 문자열 보다 더 많은 구성 옵션을 제공할 수 있습니다.
다음 코드 예시 Timeout 옵션을 60 초로 설정하고 빈 tls.Config 구조체를 SetTLSConfig() 메서드에 전달하여 TLS를 활성화합니다.
opts := options.Client(). SetConnectTimeout(60 * time.Second). SetTLSConfig(&tls.Config{}) client, _ := mongo.Connect(opts)
복제본 세트 옵션
직접 연결
모든 작업을 호스팅하다 로 강제 디스패치할지 여부를 지정합니다. 이 옵션을 지정하면 운전자 SRV 연결 형식을 허용하지 않습니다. 대신 표준 연결 URI 형식을 사용해야 합니다. SRV 연결 및 표준 연결 형식에 대해 자세히 학습 MongoDB Server 매뉴얼의 연결 문자열 가이드 참조하세요.
호스팅하다 이름을 두 개 이상 지정하는 경우 이 속성 false(으)로 설정하다 해야 합니다.
데이터 유형: bool
기본값: false
예시:
const uri = "mongodb://localhost:27017/?directConnection=true" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
복제본 세트
연결할 복제본 세트의 이름입니다.
데이터 유형: string
기본값: nil
예시:
const uri = "mongodb://localhost:27017/?replicaSet=yourReplicaSet" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
직접 연결
모든 작업을 호스팅하다 로 강제 디스패치할지 여부를 지정합니다. 이 옵션을 지정하면 운전자 SRV 연결 형식을 허용하지 않습니다. 대신 표준 연결 URI 형식을 사용해야 합니다. SRV 연결 및 표준 연결 형식에 대해 자세히 학습 MongoDB Server 매뉴얼의 연결 문자열 가이드 참조하세요.
호스팅하다 이름을 두 개 이상 지정하는 경우 이 속성 false(으)로 설정하다 해야 합니다.
데이터 유형: bool
기본값: false
예시:
opts := options.Client(). SetDirect(true) client, _ := mongo.Connect(opts)
복제본 세트
연결할 복제본 세트의 이름입니다.
데이터 유형: string
기본값: nil
예시:
opts := options.Client(). SetReplicaSet("yourReplicaSet") client, _ := mongo.Connect(opts)
TLS 옵션
TLS 옵션에 대한 자세한 내용은 연결에서 TLS 활성화 가이드 를 참조하세요.
타임아웃 옵션
ConnectTimeout
운전자 시간이 초과되기 전에 서버 에 대한 단일 TCP 소켓 연결을 설정하려고 시도하는 시간입니다.
데이터 유형: 음수가 아닌 int
기본값: 30000 밀리초
예시:
const uri = "mongodb://localhost:27017/?connectTimeoutMS=60000" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
시간 초과
클라이언트 에서 실행 단일 작업이 오류를 반환하기 전에 실행할 수 있는 시간입니다.
데이터 유형: 음수가 아닌 int
기본값: nil
예시:
const uri = "mongodb://localhost:27017/?timeoutMS=30000" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
ConnectTimeout
운전자 시간이 초과되기 전에 서버 에 대한 단일 TCP 소켓 연결을 설정하려고 시도하는 시간입니다.
데이터 유형: time.Duration
기본값: 30 초
예시:
opts := options.Client(). SetConnectTimeout(60 * time.Second) client, _ := mongo.Connect(opts)
시간 초과
클라이언트 에서 실행 단일 작업이 오류를 반환하기 전에 실행할 수 있는 시간입니다.
데이터 유형: time.Duration
기본값: nil
예시:
opts := options.Client(). SetTimeout(30 * time.Second) client, _ := mongo.Connect(opts)
압축 옵션
압축기
서버 와 주고받는 유선 프로토콜 메시지에 대한 기본 압축 유형(순서대로)입니다. "snappy", "zlib" 및 & quot;zstd" 선택적 빌드 시간 종속성으로 사용할 수 있습니다. 운전자 서버 지원하는 이러한 압축 유형 중 첫 번째를 사용합니다.
데이터 유형: string (쉼표로 구분된 값)
기본값: nil
예시:
const uri = "mongodb://localhost:27017/?compressors=zlib,snappy" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
Zlib 압축 수준
사용할 zlib 의 압축 수준입니다. zlib가 ApplyURI 또는 SetCompressors를 통해 압축기로 지정되지 않은 경우 이 옵션은 무시됩니다. 이 옵션은 -1에서 9 사이의 정수 값을 사용할 수 있습니다.
-1: (기본값).zlib은(는 ) 기본값 압축 수준(일반적으로6)을 사용합니다.0: 압축하지 않습니다.1: 속도가 가장 빠르지만 압축률은 가장 낮습니다.9: 압축률은 가장 높지만 속도가 가장 느립니다.
데이터 유형: int
기본값: -1
예시:
const uri = "mongodb://localhost:27017/?compressors=zlib&zlibCompressionLevel=6" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
Zstandard 압축 수준
사용할 zstd 의 압축 수준입니다. zstd가 ApplyURI 또는 SetCompressors를 통해 압축기로 지정되지 않은 경우 이 옵션은 무시됩니다. 이 옵션은 1에서 20 사이의 정수 값을 사용할 수 있습니다.
1: 속도가 가장 빠르지만 압축률은 가장 낮습니다.20: 압축률은 가장 높지만 속도가 가장 느립니다.
데이터 유형: int
기본값: 6
예시:
const uri = "mongodb://localhost:27017/?compressors=zstd&zstdCompressionLevel=6" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
압축기
서버 와 주고받는 유선 프로토콜 메시지에 대한 기본 압축 유형(순서대로)입니다. "snappy", "zlib" 및 & quot;zstd" 선택적 빌드 시간 종속성으로 사용할 수 있습니다. 운전자 서버 지원하는 이러한 압축 유형 중 첫 번째를 사용합니다.
데이터 유형: []string
기본값: nil
예시:
opts := options.Client(). SetCompressors([]string{"zlib", "snappy"}) client, _ := mongo.Connect(opts)
Zlib 압축 수준
사용할 zlib 의 압축 수준입니다. zlib가 ApplyURI 또는 SetCompressors를 통해 압축기로 지정되지 않은 경우 이 옵션은 무시됩니다. 이 옵션은 -1에서 9 사이의 정수 값을 사용할 수 있습니다.
-1: (기본값).
zlib는 기본값 압축 수준(일반적으로6)을 사용합니다.0: 압축하지 않습니다.
1: 속도가 가장 빠르지만 압축률은 가장 낮습니다.
9: 압축률은 가장 높지만 속도가 가장 느립니다.
데이터 유형: int
기본값: -1
예시:
opts := options.Client(). SetCompressors([]string{"zlib"}). SetZlibLevel(6) client, _ := mongo.Connect(opts)
Zstandard 압축 수준
사용할 zstd 의 압축 수준입니다. zstd가 ApplyURI 또는 SetCompressors를 통해 압축기로 지정되지 않은 경우 이 옵션은 무시됩니다. 이 옵션은 1에서 20 사이의 정수 값을 사용할 수 있습니다.
데이터 유형: int
기본값: 6
예시:
opts := options.Client(). SetCompressors([]string{"zstd"}). SetZstdLevel(8) client, _ := mongo.Connect(opts)
압축에 대한 자세한 내용은 네트워크 압축 가이드 참조하세요.
연결 풀 옵션
maxPoolSize
운전자 연결 풀 에서 만들 수 있는 최대 클라이언트 또는 연결 수입니다. 이 수에는 사용 중인 연결이 포함됩니다.
데이터 유형: 음수가 아닌 int
기본값: 100
예시:
const uri = "mongodb://localhost:27017/?maxPoolSize=150" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
최소 풀 크기
작업이 발생하지 않는 경우에도 운전자 연결 풀 에서 생성하고 유지하는 연결의 수입니다. 이 수에는 사용 중인 연결이 포함됩니다.
데이터 유형: 음수가 아닌 int
기본값: 0
예시:
const uri = "mongodb://localhost:27017/?minPoolSize=3" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
최대 연결 유휴 시간
드라이버가 연결을 닫기 전에 연결이 유휴 상태로 지속될 수 있는 시간입니다.
데이터 유형: 음수가 아닌 int
기본값: 0
예시:
const uri = "mongodb://localhost:27017/?maxIdleTimeMS=8000" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
최대 연결
연결 풀 동시에 설정할 수 있는 최대 연결 수입니다.
데이터 유형: 음수가 아닌 int
기본값: 2
예시:
const uri = "mongodb://localhost:27017/?maxConnecting=3" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
maxPoolSize
운전자 연결 풀 에서 만들 수 있는 최대 클라이언트 또는 연결 수입니다. 이 수에는 사용 중인 연결이 포함됩니다.
데이터 유형: 음수가 아닌 uint64
기본값: 100
예시:
opts := options.Client(). SetMaxPoolSize(150) client, _ := mongo.Connect(opts)
최소 풀 크기
작업이 발생하지 않는 경우에도 운전자 연결 풀 에서 생성하고 유지하는 연결의 수입니다. 이 수에는 사용 중인 연결이 포함됩니다.
데이터 유형: 음수가 아닌 uint64
기본값: 0
예시:
opts := options.Client(). SetMinPoolSize(3) client, _ := mongo.Connect(opts)
최대 연결 유휴 시간
드라이버가 연결을 닫기 전에 연결이 유휴 상태로 지속될 수 있는 시간입니다.
데이터 유형: time.Duration
기본값: 0
예시:
opts := options.Client(). SetMaxConnIdleTime(8 * time.Second) client, _ := mongo.Connect(opts)
최대 연결
연결 풀 동시에 설정할 수 있는 최대 연결 수입니다.
데이터 유형: 음수가 아닌 uint64
기본값: 2
예시:
opts := options.Client(). SetMaxConnecting(3) client, _ := mongo.Connect(opts)
연결 풀에 대해 자세히 학습 연결 풀 가이드 참조하세요.
쓰기 고려 옵션
쓰기 고려
쓰기 고려 (write concern) 의 w 구성 요소로, 쓰기 (write) 작업이 지정된 수의 MongoDB 인스턴스로 전파되었음을 확인 요청합니다. 기본값 은 중재자 및 투표 노드 수에 따라 "majority" 또는 1입니다. w 옵션에 대해 자세히 학습하려면 MongoDB Server 매뉴얼에서 쓰기 고려 를 참조하세요.
데이터 유형: int or string
기본값: 1 or "majority"
예시:
const uri = "mongodb://localhost:27017/?w=2" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
쓰기 고려
쓰기 고려 (write concern) 의 w 구성 요소로, 쓰기 (write) 작업이 지정된 수의 MongoDB 인스턴스로 전파되었음을 확인 요청합니다. 기본값 은 중재자 및 투표 노드 수에 따라 "majority" 또는 1입니다. w 옵션에 대해 자세히 학습하려면 MongoDB Server 매뉴얼에서 쓰기 고려 를 참조하세요.
데이터 유형: writeconcern.WriteConcern
기본값: 1 or "majority"
예시:
wc := &writeconcern.WriteConcern{ W: 2, } opts := options.Client().SetWriteConcern(wc) client, _ := mongo.Connect(opts)
읽기 고려 옵션
readConcern
클라이언트의 읽기 고려 (read concern) 수준입니다. 자세한 내용은 MongoDB Server 매뉴얼의 읽기 고려 (read concern) 참조를 참조하세요.
데이터 유형: string
기본값: local
예시:
const uri = "mongodb://localhost:27017/?readConcernLevel=majority" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
readConcern
클라이언트의 읽기 고려 (read concern) 수준입니다. 자세한 내용은 MongoDB Server 매뉴얼의 읽기 고려 (read concern) 참조를 참조하세요.
데이터 유형: readconcern.ReadConcern
기본값: nil
예시:
opts := options.Client(). SetReadConcern(readconcern.Majority()) client, _ := mongo.Connect(opts)
읽기 기본 설정 옵션
인증 옵션
인증 메커니즘
운전자 MongoDB Server 에 인증하는 데 사용하는 메커니즘입니다. 인증 메커니즘 지정하지 않으면 운전자 서버 버전에 따라 SCRAM-SHA-1 또는 SCRAM-SHA-256를 사용합니다.
사용 가능한 인증 메커니즘에 대해 자세히 학습 보려면 인증 메커니즘 가이드를 참조하세요.
데이터 유형: string
기본값: 비어 있음( 인증 없음), 또는 SCRAM-SHA-256 인증 활성화된 경우
예시:
const uri = "mongodb://user:password@localhost:27017/?authMechanism=PLAIN&authSource=admin" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
인증 메커니즘
운전자 MongoDB Server 에 인증하는 데 사용하는 메커니즘입니다. 인증 메커니즘 지정하지 않으면 운전자 서버 버전에 따라 SCRAM-SHA-1 또는 SCRAM-SHA-256를 사용합니다.
사용 가능한 인증 메커니즘에 대해 자세히 학습 보려면 인증 메커니즘 가이드를 참조하세요.
데이터 유형: Credential
기본값: 비어 있음( 인증 없음), 또는 SCRAM-SHA-256 인증 활성화된 경우
예시:
credential := options.Credential{ AuthMechanism: "PLAIN", AuthSource: "admin", Username: "user", Password: "password", } opts := options.Client().SetAuth(credential) client, _ := mongo.Connect(opts)
서버 선택 옵션
ServerSelectionTimeout
드라이버가 시간이 초과되기 전에 서버 선택을 시도하는 시간입니다.
데이터 유형: 음수가 아닌 int
기본값: 30000 밀리초
예시:
const uri = "mongodb://localhost:27017/?serverSelectionTimeoutMS=40000" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
LocalThreshold
서버 자격에 대한 지연 시간 창 . 서버의 왕복 시간이 가장 빠른 서버의 왕복 시간에 이 값을 더한 것보다 오래 걸리는 경우 해당 서버 선택할 수 없습니다.
데이터 유형: 음수가 아닌 int
기본값: 15 밀리초
예시:
const uri = "mongodb://localhost:27017/?localThresholdMS=20000" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
ServerSelectionTimeout
드라이버가 시간이 초과되기 전에 서버 선택을 시도하는 시간입니다.
데이터 유형: time.Duration
기본값: 30 초
예시:
opts := options.Client(). SetServerSelectionTimeout(40 * time.Second) client, _ := mongo.Connect(opts)
LocalThreshold
서버 자격에 대한 지연 시간 창 . 서버의 왕복 시간이 가장 빠른 서버의 왕복 시간에 이 값을 더한 것보다 오래 걸리는 경우 해당 서버 선택할 수 없습니다.
데이터 유형: time.Duration
기본값: 15 밀리초
예시:
opts := options.Client(). SetLocalThreshold(20 * time.Millisecond) client, _ := mongo.Connect(opts)
재시도 옵션
읽기 재시도
재시도 가능 읽기를 활성화합니다.
데이터 유형: bool
기본값: true
예시:
const uri = "mongodb://localhost:27017/?retryReads=false" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
RetryWrites
재시도 가능 쓰기를 활성화합니다.
데이터 유형: bool
기본값: true
예시:
const uri = "mongodb://localhost:27017/?retryWrites=false" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
최대 적응형 재시도
서버 측 과부하 오류로 인해 실패한 작업을 운전자 다시 시도해야 하는 최대 횟수입니다.
데이터 유형: 음수가 아닌 int
기본값: 2
예시:
const uri = "mongodb://localhost:27017/?maxAdaptiveRetries=3" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
읽기 재시도
재시도 가능 읽기를 활성화합니다.
데이터 유형: bool
기본값: true
예시:
opts := options.Client(). SetRetryReads(false) client, _ := mongo.Connect(opts)
RetryWrites
재시도 가능 쓰기를 활성화합니다.
데이터 유형: bool
기본값: true
예시:
opts := options.Client(). SetRetryWrites(false) client, _ := mongo.Connect(opts)
최대 적응형 재시도
서버 측 과부하 오류로 인해 실패한 작업을 운전자 다시 시도해야 하는 최대 횟수입니다.
데이터 유형: 음수가 아닌 uint
기본값: 2
예시:
const uri = "mongodb://localhost:27017/?maxAdaptiveRetries=3" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
기타 옵션
애플리케이션 이름
운전자 연결 핸드셰이크의 일부로 클라이언트 메타데이터 에서 서버 에 전달하는 앱 이름입니다. 연결이 설정되면 서버 이 값을 MongoDB 로그에 출력합니다. 이 값은 느린 쿼리 로그 및 프로필 컬렉션에도 기록됩니다.
데이터 유형: string
기본값: nil
예시:
const uri = "mongodb://localhost:27017/?appName=yourAppName" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
로드 밸런싱
운전자 로드 밸런서 에 연결 중인지 여부를 지정합니다. 다음 조건이 모두 충족되는 경우에만 이 속성 true 로 설정하다 수 있습니다.
호스팅하다 이름을 하나만 지정합니다.
복제본 세트 에 연결하지 않습니다.
SrvMaxHosts속성 사용하지 않습니다.DirectConnection속성 사용하지 않습니다.
데이터 유형: bool
기본값: false
예시:
const uri = "mongodb://localhost:27017/?loadBalanced=true" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
SRV 최대 호스트
시드 목록을 처음 채울 때 또는 SRV 폴링 중에 토폴로지 에 새 호스트를 추가할 때 무작위로 선택할 수 있는 SRV 결과의 최대 개수입니다.
이 속성 연결 문자열 체계가 ConnectionStringScheme.MongoDBPlusSrv로 설정하다 경우에만 사용할 수 있습니다. 복제본 세트 에 연결할 때는 사용할 수 없습니다.
데이터 유형: 음수가 아닌 int
기본값: 0
예시:
opts := options.Client(). SetSRVMaxHosts(5) client, _ := mongo.Connect(opts)
SRV 서비스 이름
운전자 시드 목록을 구성하기 위해 검색하는 SRV 리소스 레코드 의 서비스 이름입니다. 운전자 서비스 이름을 사용하여 다음 형식과 일치하는 SRV URI를 생성합니다.
_{srvServiceName}._tcp.{hostname}.{domainname}
이 속성 검색 및 폴링에서 SRV 조회에 대한 기본값 서비스 이름을 재정의합니다. 기본값 은 "mongodb"입니다.
이 속성 연결 문자열 체계가 ConnectionStringScheme.MongoDBPlusSrv로 설정하다 경우에만 사용할 수 있습니다. 복제본 세트 에 연결할 때는 사용할 수 없습니다.
데이터 유형: string
기본값: mongodb
예시:
const uri = "mongodb+srv://localhost/?srvServiceName=yourServiceName" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
애플리케이션 이름
운전자 연결 핸드셰이크의 일부로 클라이언트 메타데이터 에서 서버 에 전달하는 앱 이름입니다. 연결이 설정되면 서버 이 값을 MongoDB 로그에 출력합니다. 이 값은 느린 쿼리 로그 및 프로필 컬렉션에도 기록됩니다.
데이터 유형: string
기본값: nil
예시:
opts := options.Client(). SetAppName("yourAppName") client, _ := mongo.Connect(opts)
로드 밸런싱
운전자 로드 밸런서 에 연결 중인지 여부를 지정합니다. 다음 조건이 모두 충족되는 경우에만 이 속성 true 로 설정하다 수 있습니다.
호스팅하다 이름을 하나만 지정합니다.
복제본 세트 에 연결하지 않습니다.
SrvMaxHosts속성 사용하지 않습니다.DirectConnection속성 사용하지 않습니다.
데이터 유형: bool
기본값: false
예시:
opts := options.Client(). SetLoadBalanced(true) client, _ := mongo.Connect(opts)
Server API
명령을 실행 때 서버 로 전송되는 API 버전을 구성합니다. 서버 API 에 대한 자세한 내용은 Stable API 가이드 참조하세요.
데이터 유형: ServerAPIOptions
기본값: nil
예시:
opts := options.Client(). SetServerAPIOptions(options.ServerAPI(options.ServerAPIVersion1)) client, _ := mongo.Connect(opts)
SRV 최대 호스트
시드 목록을 처음 채울 때 또는 SRV 폴링 중에 토폴로지 에 새 호스트를 추가할 때 무작위로 선택할 수 있는 SRV 결과의 최대 개수입니다.
이 속성 연결 문자열 체계가 ConnectionStringScheme.MongoDBPlusSrv로 설정하다 경우에만 사용할 수 있습니다. 복제본 세트 에 연결할 때는 사용할 수 없습니다.
데이터 유형: 음수가 아닌 int
기본값: 0
예시:
opts := options.Client(). SetSRVMaxHosts(5) client, _ := mongo.Connect(opts)
SRV 서비스 이름
운전자 시드 목록을 구성하기 위해 검색하는 SRV 리소스 레코드 의 서비스 이름입니다. 운전자 서비스 이름을 사용하여 다음 형식과 일치하는 SRV URI를 생성합니다.
_{srvServiceName}._tcp.{hostname}.{domainname}
이 속성 검색 및 폴링에서 SRV 조회에 대한 기본값 서비스 이름을 재정의합니다. 기본값 은 "mongodb"입니다.
이 속성 연결 문자열 체계가 ConnectionStringScheme.MongoDBPlusSrv로 설정하다 경우에만 사용할 수 있습니다. 복제본 세트 에 연결할 때는 사용할 수 없습니다.
데이터 유형: string
기본값: mongodb
예시:
opts := options.Client(). SetSRVServiceName("yourServiceName") client, _ := mongo.Connect(opts)
추가 정보
연결 문자열에 지정할 수 있는 옵션에 대해 자세히 학습하려면 MongoDB Server 매뉴얼의 연결 문자열 옵션 을 참조하세요.
이 페이지에 사용된 유형에 대한 자세한 내용은 다음 API 문서를 참조하세요.