MongoDB에 연결
이 가이드에서는 Java Reactive Streams 드라이버를 사용하여 MongoDB에 연결하는 방법을 설명합니다.
MongoClients.create()
메서드를 사용하여 실행 중인 MongoDB deployment에 연결합니다.
중요
다음 예시에서는 MongoClient
을(를) 인스턴스화하는 방법의 전체 목록을 제공하지 않습니다. 팩토리 메서드의전체 목록은 MongoClient
MongoClients API 설명서를 참조하세요.
참고
시스템 연결 유지 설정은 제한 시간을 더 짧게 구성 하는 것이 좋습니다 .
TCP 킵얼라이브 시간이 MongoDB 배포에 영향을 미치나요?를 참조하세요. 자세한 내용은 서버 매뉴얼 FAQ의 질문과 답변을 참조하세요.
전제 조건
이 가이드의 코드 예제를 실행하려면 다음 구성 요소를 설정해야 합니다.
연결할 MongoDB 배포가 실행 중이어야 합니다. 예를 들어 독립형 배포에 연결하려면 실행 중인 독립형 배포에 대한 액세스 권한이 있어야 합니다.
프로젝트에 설치된 드라이버 종속성. 드라이버 설치 방법을 알아보려면 설치 가이드를 참조하세요.
다음 가져오기 문:
import com.mongodb.reactivestreams.client.MongoClients; import com.mongodb.reactivestreams.client.MongoClient; import com.mongodb.MongoClientSettings; import com.mongodb.ConnectionString; import com.mongodb.ServerAddress; import com.mongodb.MongoCredential; import java.util.Arrays;
몽고클라이언트
MongoClient
인스턴스 인스턴스는 데이터베이스에 대한 연결 풀을 나타냅니다.MongoClient
여러 개의 동시 작업을 실행하는 경우에도 인스턴스 인스턴스는 하나만 필요합니다.
중요
일반적으로 독립형 배포, 복제본 세트 또는 샤드 클러스터와 같은 특정 MongoDB 배포에 대해 MongoClient
인스턴스를 하나만 만들고 애플리케이션 전체에서 클라이언트를 사용합니다. 그러나 여러 인스턴스를 만드는 경우 다음 사항에 유의하세요.
모든 리소스 사용량 제한(예: 최대 연결 수)은 각
MongoClient
인스턴스에 적용됩니다.인스턴스를 삭제하려면
MongoClient.close()
메서드를 호출하여 리소스를 정리합니다.
독립형 MongoDB 배포에 연결
다음 예제는 단일 MongoDB deployment에 연결하는 여러 가지 방법을 보여줍니다.
다음과 같은 방법으로 단일 MongoDB deployment에 연결할 수 있습니다.
매개 변수 없이
MongoClient
객체를 인스턴스화하여 포트27017
의 로컬 호스트에서 실행 중인 MongoDB 서버에 연결합니다.MongoClient mongoClient = MongoClients.create(); 포트
27017
의 지정된 호스트에서 실행 중인 MongoDB 인스턴스에 연결하려면hostname
를 명시적으로 지정합니다.MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder() .applyToClusterSettings(builder -> builder.hosts(Arrays.asList(new ServerAddress("hostOne")))) .build()); hostname
및port
을 명시적으로 지정합니다.MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder() .applyToClusterSettings(builder -> builder.hosts(Arrays.asList(new ServerAddress("hostOne", 27018)))) .build()); ConnectionString
을(를) 지정합니다.MongoClient mongoClient = MongoClients.create("mongodb://hostOne:27017");
복제본 세트에 연결
복제본 세트에 연결하려면 MongoClients.create()
메서드에 하나 이상의 멤버를 지정해야 합니다. 복제본 세트에 대해 자세히 알아보려면 MongoDB Server 매뉴얼의 복제 를 참조하세요.
참고
MongoDB는 복제본 세트에서 프라이머리 및 세컨더리 노드를 자동으로 검색합니다.
ConnectionString
에 멤버를 지정하여 MongoDB 복제본 세트에 연결할 수 있습니다.
다음 예에서는 복제본 세트의 세 멤버를 지정하는 방법을 보여줍니다.
MongoClient mongoClient = MongoClients.create("mongodb://host1:27017,host2:27017,host3:27017");
다음 예에서는 복제본 세트 이름과 함께 복제본 세트의 멤버와 replicaSet
옵션을 지정하는 방법을 보여 줍니다.
MongoClient mongoClient = MongoClients.create("mongodb://host1:27017,host2:27017,host3:27017/?replicaSet=myReplicaSet");
다음 예에서는 모든 복제본 세트 멤버에 해당하는 ServerAddress
인스턴스 목록을 지정하는 방법을 보여줍니다.
MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder() .applyToClusterSettings(builder -> builder.hosts(Arrays.asList( new ServerAddress("host1", 27017), new ServerAddress("host2", 27017), new ServerAddress("host3", 27017)))) .build());
샤드 클러스터에 연결
샤드 클러스터에 연결하려면 mongos
인스턴스를 MongoClients.create()
메서드에 하나 이상 지정합니다. 샤드 클러스터에 대해 자세히 알아보려면 MongoDB Server 매뉴얼의 샤딩 을 참조하세요.
다음과 같은 방법으로 단일 mongos
인스턴스에 연결할 수 있습니다.
ConnectionString
에 호스트 이름과 포트를 지정합니다.MongoClient mongoClient = MongoClients.create( "mongodb://localhost:27017" ); localhost:27017
에서mongos
가 실행 중인 경우 연결 string 을 제외합니다.MongoClient mongoClient = MongoClients.create();
다음과 같은 방법으로 여러 mongos
인스턴스에 연결할 수 있습니다.
호스트 이름과 포트를 포함하려면
ConnectionString
을(를) 지정합니다.MongoClient mongoClient = MongoClients.create("mongodb://host1:27017,host2:27017"); 각 인스턴스에 해당하는
ServerAddress
객체 목록을 지정합니다.MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder() .applyToClusterSettings(builder -> builder.hosts(Arrays.asList( new ServerAddress("host1", 27017), new ServerAddress("host2", 27017)))) .build());
연결 옵션
ConnectionString
또는 MongoClientSettings
유형 중 하나 또는 둘 다를 사용하여 연결 설정을 지정할 수 있습니다.
예를 들어, 연결 string에 TLS/SSL 및 인증 설정을 지정할 수 있습니다.
MongoClient mongoClient = MongoClients.create("mongodb://user1:pwd1@host1/?authSource=db1&ssl=true");
MongoClientSettings
인스턴스를 사용하여 TLS/SSL을 지정하고 MongoCredential
유형을 사용하여 인증 정보를 저장할 수도 있습니다.
String user; // the username String database; // the name of the database in which the user is defined char[] password; // the password as a character array // ... MongoCredential credential = MongoCredential.createCredential(user, database, password); MongoClientSettings settings = MongoClientSettings.builder() .credential(credential) .applyToSslSettings(builder -> builder.enabled(true)) .applyToClusterSettings(builder -> builder.hosts(Arrays.asList(new ServerAddress("host1", 27017)))) .build(); MongoClient mongoClient = MongoClients.create(settings);
경우에 따라 연결 문자열을 프로그래밍 구성과 결합해야 할 수도 있습니다.
ConnectionString connectionString = new ConnectionString("mongodb://host1:27107,host2:27017/?ssl=true"); CommandListener myCommandListener = ...; MongoClientSettings settings = MongoClientSettings.builder() .addCommandListener(myCommandListener) .applyConnectionString(connectionString) .build(); MongoClient mongoClient = MongoClients.create(settings);