MongoDB에 연결
개요
이 페이지에는 다양한 설정을 사용하여 Java Reactive Streams 애플리케이션 을 MongoDB 에 연결하는 방법을 보여주는 코드 예제가 포함되어 있습니다.
팁
이 페이지의 연결 옵션에 대해 자세히 알아보려면 각 섹션에 제공된 링크를 참조하세요.
이 페이지의 연결 예제를 사용하려면 코드 예제를 샘플 애플리케이션 또는 자체 애플리케이션에 복사합니다. 코드 예제의 모든 자리 표시자(예: <Atlas
connection string>
)를 MongoDB 배포에 필요한 관련 값으로 바꿔야 합니다.
중요
프로젝트 리액터 라이브러리
이 가이드 에서는 Project Reactor 라이브러리를 사용하여 Publisher
Java Reactive Streams 운전자 메서드에서 반환된 인스턴스를 사용합니다. 프로젝트 Reactor 라이브러리와 사용 방법에 학습 보려면 Reactor 문서에서 시작하기 를 참조하세요. 이 가이드 에서 Project Reactor 라이브러리 메서드를 사용하는 방법에 학습 보려면 MongoDB 에 데이터 쓰기 가이드 를 참조하세요.
다음 샘플 애플리케이션을 사용하여 이 페이지의 코드 예제를 테스트할 수 있습니다. 샘플 애플리케이션을 사용하려면 다음 단계를 수행하세요.
IDE에서 새 Java 프로젝트 를 만듭니다.
Java 프로젝트 에 Java Reactive Streams 운전자 를 설치합니다.
프로젝트 리액터 라이브러리 설치 Java 프로젝트 에서 .
다음 코드를 복사하여
ConnectionApp.java
이라는 새 Java 파일 에 붙여넣습니다.이 페이지에서 코드 예제를 복사하여 파일의 지정된 줄에 붙여넣습니다.
1 import com.mongodb.ConnectionString; 2 import com.mongodb.MongoClientSettings; 3 import com.mongodb.ServerApi; 4 import com.mongodb.ServerApiVersion; 5 6 import org.bson.BsonDocument; 7 import org.bson.BsonInt64; 8 import org.bson.Document; 9 10 import com.mongodb.reactivestreams.client.MongoClient; 11 import com.mongodb.reactivestreams.client.MongoClients; 12 import com.mongodb.reactivestreams.client.MongoDatabase; 13 import org.bson.conversions.Bson; 14 import reactor.core.publisher.Mono; 15 16 class ConnectionApp { 17 public static void main(String[] args) { 18 //start example code here 19 20 //end example code here 21 { 22 Bson command = new BsonDocument("ping", new BsonInt64(1)); 23 MongoDatabase database = mongoClient.getDatabase("admin"); 24 Publisher<Document> MonoPublisher = database.runCommand(command); 25 26 Mono.from(MonoPublisher) 27 .doOnSuccess(x -> System.out.println("Pinged your deployment. You successfully connected to MongoDB!")) 28 .doOnError(err -> System.out.println("Error: " + err.getMessage())) 29 .block(); 30 31 //other application code 32 33 } 34 } 35 }
연결
로컬 배포
String uri = "mongodb://<hostname>:<port>/"; try (MongoClient mongoClient = MongoClients.create(uri))
Atlas
String uri = "<Atlas connection string>"; ServerApi serverApi = ServerApi.builder() .version(ServerApiVersion.V1) .build(); MongoClientSettings settings = MongoClientSettings.builder() .applyConnectionString(new ConnectionString(uri)) .serverApi(serverApi) .build(); try (MongoClient mongoClient = MongoClients.create(settings))
복제본 세트
String uri = "mongodb://<replica set member>:<port>/?replicaSet=<replica set name>"; try (MongoClient mongoClient = MongoClients.create(uri))
샤딩된 클러스터
샤드 클러스터에 연결하려면 mongos
인스턴스를 MongoClients.create()
메서드에 하나 이상 지정합니다. 샤드 클러스터에 대해 자세히 알아보려면 MongoDB Server 매뉴얼의 샤딩 을 참조하세요.
다음과 같은 방법으로 단일 mongos
인스턴스에 연결할 수 있습니다.
다음 코드와 같이 연결 string 에 호스트 이름과 포트를 지정합니다.
MongoClient mongoClient = MongoClients.create( "mongodb://<hostname>:<port>" ); 다음 코드에 표시된 대로
localhost:27017
에서mongos
가 실행 경우 연결 string 을 제외합니다.MongoClient mongoClient = MongoClients.create();
다음과 같은 방법으로 여러 mongos
인스턴스에 연결할 수 있습니다.
다음 코드에 표시된 대로 호스트 이름과 포트를 포함할 연결 string 을 지정합니다.
MongoClient mongoClient = MongoClients.create("mongodb://<first hostname>:<first port>,<second hostname>:<second port>"); 다음 코드와 같이 각 인스턴스 에 해당하는
ServerAddress
객체 목록을 지정합니다.MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder() .applyToClusterSettings(builder -> builder.hosts(Arrays.asList( new ServerAddress("<first hostname>", <first port>), new ServerAddress("<second hostname", <second port>)))) .build());
연결 옵션
연결 string 이나 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);
경우에 따라 다음 코드와 같이 연결 string 을 프로그래밍 구성과 결합해야 할 수 있습니다.
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);