개요
이 페이지에서는 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 구조체에 연결하여 연결 설정을 구성할 수도 있습니다. 이러한 방식으로 연결을 구성하면 런타임에 설정을 더 쉽게 변경할 수 있고, 컴파일 중에 오류를 포착하는 데 도움이 되며, 연결 문자열보다 더 많은 구성 옵션을 제공합니다.
다음 코드 예시는 SetTLSConfig() 메서드에 빈 tls.Config 구조체를 전달하여 Timeout 옵션을 60 초로 설정하고 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", "zstd"를 활성화할 수 있습니다. 드라이버는 서버가 지원하는 이러한 압축 유형 중 첫 번째 것을 사용합니다.
데이터 유형: string (쉼표로 구분된 값)
기본값: nil
예시:
const uri = "mongodb://localhost:27017/?compressors=zlib,snappy" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
zlibCompressionLevel
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", "zstd"를 활성화할 수 있습니다. 드라이버는 서버가 지원하는 이러한 압축 유형 중 첫 번째 것을 사용합니다.
데이터 유형: []string
기본값: nil
예시:
opts := options.Client(). SetCompressors([]string{"zlib", "snappy"}) client, _ := mongo.Connect(opts)
zlibCompressionLevel
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))
minPoolSize
작업이 발생하지 않는 경우에도 드라이버가 연결 풀에서 생성하고 유지하는 연결 수입니다. 이 카운트에는 사용 중인 연결이 포함됩니다.
데이터 유형: 음수가 아닌 int
기본값: 0
예시:
const uri = "mongodb://localhost:27017/?minPoolSize=3" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
MaxConnectionIdleTime
드라이버가 연결을 닫기 전에 연결이 유휴 상태로 지속될 수 있는 시간입니다.
데이터 유형: 음수가 아닌 int
기본값: 0
예시:
const uri = "mongodb://localhost:27017/?maxIdleTimeMS=8000" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
MaxConnecting
연결 풀이 동시에 설정할 수 있는 최대 연결 수입니다.
데이터 유형: 음수가 아닌 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)
minPoolSize
작업이 발생하지 않는 경우에도 드라이버가 연결 풀에서 생성하고 유지하는 연결 수입니다. 이 카운트에는 사용 중인 연결이 포함됩니다.
데이터 유형: 음수가 아닌 uint64
기본값: 0
예시:
opts := options.Client(). SetMinPoolSize(3) client, _ := mongo.Connect(opts)
MaxConnectionIdleTime
드라이버가 연결을 닫기 전에 연결이 유휴 상태로 지속될 수 있는 시간입니다.
데이터 유형: time.Duration
기본값: 0
예시:
opts := options.Client(). SetMaxConnIdleTime(8 * time.Second) client, _ := mongo.Connect(opts)
MaxConnecting
연결 풀이 동시에 설정할 수 있는 최대 연결 수입니다.
데이터 유형: 음수가 아닌 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))
SRVmax 호스트
시드 목록을 처음 채울 때 또는 SRV 폴링 중에 토폴로지에 새 호스트를 추가할 때 무작위로 선택할 수 있는 SRV 결과의 최대 개수입니다.
이 속성 연결 문자열 체계가 ConnectionStringScheme.MongoDBPlusSrv로 설정하다 경우에만 사용할 수 있습니다. 복제본 세트 에 연결할 때는 사용할 수 없습니다.
데이터 유형: 음수가 아닌 int
기본값: 0
예시:
opts := options.Client(). SetSRVMaxHosts(5) client, _ := mongo.Connect(opts)
srvServiceName
운전자 시드 목록을 구성하기 위해 검색하는 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)
SRVmax 호스트
시드 목록을 처음 채울 때 또는 SRV 폴링 중에 토폴로지에 새 호스트를 추가할 때 무작위로 선택할 수 있는 SRV 결과의 최대 개수입니다.
이 속성 연결 문자열 체계가 ConnectionStringScheme.MongoDBPlusSrv로 설정하다 경우에만 사용할 수 있습니다. 복제본 세트 에 연결할 때는 사용할 수 없습니다.
데이터 유형: 음수가 아닌 int
기본값: 0
예시:
opts := options.Client(). SetSRVMaxHosts(5) client, _ := mongo.Connect(opts)
srvServiceName
운전자 시드 목록을 구성하기 위해 검색하는 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 문서를 참조하세요.