다음 가이드에는 특정 유형의 MongoDB 구성에 대한 정보가 포함되어 있습니다.
간단한 독립형 서버 에 연결하는 예시 는 튜토리얼 을 참조하세요. 인증 옵션을 활성화한 상태에서 연결을 설정하려면 인증 페이지를 참조하세요. 데이터 압축을 사용한 연결의 예시 를 보려면 데이터 압축 페이지를 참조하세요.
복제본 세트에 연결
복제본 세트 에 연결하는 것은 독립형 MongoDB 서버 에 연결하는 것과 비슷합니다. ?replicaSet=myreplset URI 옵션을 사용하여 복제본 세트 이름을 지정하기만 하면 됩니다.
int main (int argc, char *argv[]) {    mongoc_client_t *client;    mongoc_init ();    /* Create our MongoDB Client */    client = mongoc_client_new (       "mongodb://host01:27017,host02:27017,host03:27017/?replicaSet=myreplset");    /* Do some work */    /* TODO */    /* Clean up */    mongoc_client_destroy (client);    mongoc_cleanup ();    return 0; } 
팁
MongoDB 연결 string URI에 여러 호스트 이름을 지정할 수 있으며, 시드 목록에서 호스트를 구분하는 것은 쉼표입니다.
운전자 가 모든 노드 에 연결할 수 있도록 복제본 세트 멤버의 시드 목록 을 사용하는 것이 좋습니다.
샤딩된 클러스터에 연결
샤딩된 클러스터 에 연결하려면 클라이언트 가 연결해야 하는 mongos 노드를 지정합니다. C 드라이버 는 mongos 샤딩 서버 에 연결되었음을 자동으로 감지합니다.
호스트 이름이 두 개 이상 지정된 경우 mongos 인스턴스 간에 페일오버 를 시도하기 위해 시드 목록 이 생성됩니다.
경고
mongos 샤딩 서버 에 연결할 때 replicaSet 매개 변수를 지정할 수 없습니다.
int main (int argc, char *argv[]) {    mongoc_client_t *client;    mongoc_init ();    /* Create our MongoDB Client */    client = mongoc_client_new ("mongodb://myshard01:27017/");    /* Do something with client ... */    /* Free the client */    mongoc_client_destroy (client);    mongoc_cleanup ();    return 0; } 
IPv6 주소에 연결
MongoDB C 드라이버 는 호스팅하다 이름에서 IPv6 주소를 자동으로 확인합니다. 그러나 IPv6 주소 를 직접 지정하려면 주소 를 [] 로 래핑합니다.
mongoc_uri_t *uri = mongoc_uri_new ("mongodb://[::1]:27017"); 
IPv4 및 IPv6로 연결
IPv 및 IPv DNS 레코드가 모두 있는 호스트 이름에4 6 연결하는 경우 동작은 RFC-6555 를 따릅니다. 먼저 IPv6 주소 에 대한 연결을 시도합니다. IPv6 이 실패하면 IPv4 주소 로 연결이 시도됩니다. IPv6 에 대한 연결 시도가 250ms 이내에 완료되지 않으면 IPv4 가 병렬로 시도됩니다. 어느 쪽이든 먼저 연결에 성공하면 다른 쪽이 취소됩니다. 성공적인 DNS 결과는 10 분 동안 캐시됩니다.
따라서 호스트와 연결된 A(IPv4) 및 AAA(IPv6) DNS 레코드가 모두 있는 경우 IPv4 에서만 수신 대기 중인 mongod에 연결하려는 시도가 지연될 수 있습니다.
지연을 방지하려면 MongoDB 구성과 일치하도록 호스트 이름을 구성하세요. 즉, mongod 가 IPv4 에서만 수신 대기하는 경우에만 A 기록 를 생성합니다.
UNIX 도메인 소켓에 연결
UNIX와 유사한 시스템에서 C 드라이버 는 UNIX 도메인 소켓을 사용하여 MongoDB 서버 에 직접 연결할 수 있습니다. URL 로 인코딩된 경로를 소켓에 전달하며, 이 경로에는 접미사가 .sock 이어야 합니다 . 예를 예시 /tmp/mongodb-27017.sock 에서 도메인 소켓에 연결하려면 다음을 수행합니다.
mongoc_uri_t *uri = mongoc_uri_new ("mongodb://%2Ftmp%2Fmongodb-27017.sock"); 
다음과 같이 사용자 이름 과 비밀번호를 포함합니다.
mongoc_uri_t *uri = mongoc_uri_new ("mongodb://user:pass@%2Ftmp%2Fmongodb-27017.sock"); 
TLS를 통해 서버 에 연결
다음은 TLS/SSL 연결을 구성하기 위한 지침입니다.
서버 를 로컬로 실행 하려면( 예시: 포트 27017 에서):
$ mongod --port 27017 --tlsMode requireTLS --tlsCertificateKeyFile server.pem --tlsCAFile ca.pem 
클라이언트 URI 끝에 /?tls=true 을(를) 추가합니다.
mongoc_client_t *client = NULL; client = mongoc_client_new ("mongodb://localhost:27017/?tls=true"); 
MongoDB는 --tlsAllowConnectionsWithoutCertificates 을 제공하지 않는 한 기본적으로 클라이언트 인증서를 요구합니다. C 드라이버는 URI 옵션 tlsCertificateKeyFile 을 사용하여 클라이언트 인증서를 제공하도록 구성할 수 있으며, 이 옵션은 상수 MONGOC_URI_TLSCERTIFICATEKEYFILE 를 통해 참조할 수 있습니다.
mongoc_client_t *client = NULL; mongoc_uri_t *uri = mongoc_uri_new ("mongodb://localhost:27017/?tls=true"); mongoc_uri_set_option_as_utf8 (uri, MONGOC_URI_TLSCERTIFICATEKEYFILE, "client.pem"); client = mongoc_client_new_from_uri (uri); 
tlsCertificateKeyFile 에서 제공하는 클라이언트 인증서는 --tlsCAFile 에 나열된 서버 신뢰할 수 있는 인증 기관 중 하나에서 발급하거나 생략된 경우 서버 의 네이티브 인증서 저장 에 있는 CA에서 발급해야 합니다.
다양한 TLS 관련 옵션에 대한 자세한 내용은 TLS 구성 을 참조하세요.
MongoDB와 주고받는 데이터 압축
이 콘텐츠는 데이터 압축 페이지로 이전되었습니다.
추가 연결 옵션
연결 옵션의 전체 목록은 mongoc_uri_t Docs 에서 확인할 수 있습니다.
특정 소켓/연결 관련 옵션은 구성할 수 없습니다:
| 옵션 | 설명 | 값 | 
|---|---|---|
| SO_KEEPALIVE | TCP Keep Alive | Enabled | 
| TCP_KEEPIDLE | TCP가 킵얼라이브 프로브를 보내기 전에 연결이 유휴 상태로 유지되어야 하는 시간 | 120 초 | 
| TCP_KEEPINTVL | The time in seconds between TCP probes | 10 seconds | 
| TCP_KEEPCNT | 연결을 삭제하기 전에 승인 없이 보낼 프로브 수 | 9 probes | 
| TCP_NODELAY | Send packets as soon as possible or buffer small packets (Nagle algorithm) | Enabled (no buffering) |