MongoDB에 연결
이 가이드에서는 코틀린(Kotlin) 드라이버를 사용하여 MongoDB 인스턴스 또는 복제본 세트에 연결하는 방법을 배울 수 있습니다.
을( 를) Atlas 클러스터에 연결하는 샘플 코드를 보거나 MongoClient
클래스 및 연결 URI에 대해 자세히 알아볼 수 있습니다.
몽고클라이언트
0} 클래스를 사용하여 MongoDB에 연결하고 통신할 수 있습니다.MongoClient
MongoClient.create()
0} 메서드를 사용하여 을 MongoClient
구성합니다.
중요
클라이언트 재사용
각 MongoClient
는 데이터베이스에 대한 연결 풀을 나타내므로 대부분의 애플리케이션은 스레드가 여러 개인 경우에도 MongoClient
의 단일 인스턴스만 필요로 합니다.
운전자 에서 연결 풀이 작동하는 방식에 학습 보려면 FAQ 페이지를 참조하세요.
최대 연결 수와 같은 모든 리소스 사용량 제한은 개별 MongoClient
인스턴스에 적용됩니다.
0}의 동작을 제어하는 데 사용할 수 있는 다양한 설정에 대해 알아보려면 MongoClient MongoClient
설정에 대한가이드를 참조하세요 .
팁
인스턴스가 더 이상 필요하지 않을 때는 항상 MongoClient.close()
을 호출하여 리소스를 정리하세요.
연결 URI
연결 URI는 드라이버가 MongoDB 배포에 연결하는 데 사용하는 일련의 지침을 제공합니다. 이는 MongoDB에 연결하는 방법과 연결된 동안 작동하는 방법에 대해 드라이버에 지시합니다. 다음 그림에서는 샘플 연결 URI의 각 부분을 설명합니다.
이 그림에서는 프로토콜에 표준 연결 string 형식 mongodb
을 사용합니다. 배포의 유연성을 높이고 클라이언트를 재구성하지 않고도 서버를 교대로 변경할 수 있는 기능을 원하는 경우 DNS 시드 목록 연결 형식 mongodb+srv
을 사용할 수도 있습니다.
참고
배포가 MongoDB Atlas 에 있는 경우, Atlas 드라이버 연결 가이드 를 참조하고 언어 드롭다운에서 Kotlin 를 선택하여 연결 string 을 검색합니다.
비밀번호 기반 인증 메커니즘 을 사용하는 경우 연결 URI의 다음 부분에는 자격 증명 이 포함됩니다. user
값을 데이터베이스 사용자 이름 으로 바꾸고 pass
값을 데이터베이스 사용자 비밀번호로 바꿉니다. 인증 메커니즘 에 자격 증명 이 필요하지 않은 경우 연결 URI에서 이 부분을 생략합니다.
연결 URI의 다음 부분은 호스트 이름 또는 IP 주소를 지정하고 그 뒤에 MongoDB 인스턴스의 포트를 지정합니다. 이 예에서 sample.host
은 호스트 이름을 나타내고 27017
은 포트 번호입니다. 이 값을 MongoDB 인스턴스의 포인트 정보로 바꿉니다.
연결 URI의 마지막 부분에는 연결 옵션이 매개변수로 포함되어 있습니다. 이 예제에서는 maxPoolSize=20
및 w=majority
라는 두 가지 연결 옵션을 설정합니다. 연결 옵션에 대한 자세한 내용을 보려면 이 가이드의 연결 옵션 섹션으로 건너뛰세요.
Atlas 연결 예시
Atlas에서 MongoDB deployment에 연결하려면 클라이언트를 생성합니다. MongoClientSettings
객체를 MongoClient.create()
생성자에 전달하여 연결 문자열과 기타 클라이언트 옵션을 사용하는 클라이언트를 만들 수 있습니다.
MongoClientSettings
0} 객체를 인스턴스화하려면 빌더 메서드를 사용하여 연결 문자열 및 기타 클라이언트 옵션을 지정한 다음 build()
메서드를 호출하세요. 연결 URI를 지정하려면 applyConnectionString()
메서드를 빌더에 연결하세요.
새 서버 버전으로 업그레이드할 때 호환성이 손상되는 변경을 피하려면 Stable API 버전 클라이언트 옵션을 설정할 수 있습니다. Stable API 기능에 대해 자세히 알아보려면 Stable API 페이지를 참조하세요.
다음 코드는 Atlas의 MongoDB deployment에 연결할 때 연결 문자열과 Stable API 클라이언트 옵션을 지정하고 연결이 성공했는지 확인하는 방법을 보여줍니다.
// Replace the placeholder with your Atlas connection string val uri = "<connection string>" // Construct a ServerApi instance using the ServerApi.builder() method val serverApi = ServerApi.builder() .version(ServerApiVersion.V1) .build() val settings = MongoClientSettings.builder() .applyConnectionString(ConnectionString(uri)) .serverApi(serverApi) .build() // Create a new client and connect to the server val mongoClient = MongoClient.create(settings) val database = mongoClient.getDatabase("admin") try { // Send a ping to confirm a successful connection val command = Document("ping", BsonInt64(1)) val commandResult = database.runCommand(command) println("Pinged your deployment. You successfully connected to MongoDB!") } catch (me: MongoException) { System.err.println(me) }
MongoDB에 연결하는 다른 방법
Atlas에서 호스팅되지 않는 단일 MongoDB 서버 인스턴스 또는 복제본 세트에 연결하는 경우, 다음 섹션을 참조하여 연결 방법을 알아보세요.
로컬 기계에서 MongoDB Server에 연결하기
Atlas 클러스터를 사용하는 대신 개발 목적으로 로컬 컴퓨터에서 MongoDB 서버를 실행해야 하는 경우, 다음을 완료해야 합니다:
MongoDB Server의 Community 또는 Enterprise 버전을 다운로드하세요.
MongoDB 서버를 설치하고 구성합니다.
서버를 시작합니다.
중요
악의적인 공격으로부터 항상 MongoDB 서버를 보호하세요. 보안 체크리스트에서 보안 권장 사항 목록을 확인하세요.
MongoDB Server를 성공적으로 시작한 후에는 드라이버 연결 코드에 연결 문자열을 지정하세요.
MongoDB Server가 로컬에서 실행되는 경우 연결 문자열("mongodb://localhost:<port>"
)을 사용할 수 있습니다. 여기서 <port>
는 서버가 들어오는 연결을 수신하도록 구성한 포트 번호입니다.
다른 호스트 이름 또는 IP 주소를 지정해야 하는 경우 연결 문자열에 대한 서버 매뉴얼 항목을 참조하세요.
서버에 연결할 수 있는지 테스트하려면 MongoDB Atlas에 연결 코드 예시에서 연결 문자열을 바꾸고 실행하세요.
복제본 세트에 연결
MongoDB 복제본 세트 배포는 동일한 데이터 세트를 저장하는 연결된 인스턴스 그룹입니다. 이러한 인스턴스 구성은 데이터 중복성과 높은 데이터 가용성을 제공합니다.
복제 세트 배포에 연결하려면 복제 세트 구성원의 호스트 이름 (또는 IP 주소) 과 포트 번호를 지정합니다.
복제본 세트에 있는 호스트의 전체 목록을 제공할 수 없는 경우, 복제본에 있는 호스트의 단일 또는 하위 집합을 지정하고 다음 방법 중 하나를 사용하여 드라이버가 자동 검색을 수행하도록 지시할 수 있습니다:
복제본 세트의 이름을
replicaSet
매개변수의 값으로 지정합니다.directConnection
매개 변수의 값으로false
를 지정합니다.복제본 세트에 둘 이상의 호스트를 지정합니다.
팁
복제본 세트에 호스트의 하위 집합을 지정할 수 있지만, 호스트 중 하나에 연결할 수 없는 경우 드라이버가 연결을 설정할 수 있도록 복제본 세트에 모든 호스트를 포함하세요.
다음 예에서는 ConnectionString
또는 MongoClientSettings
클래스를 사용하여 MongoClient
인스턴스에 여러 호스트를 지정하는 방법을 보여줍니다. 원하는 수업에 해당하는 탭을 선택합니다.
val connectionString = ConnectionString("mongodb://host1:27017,host2:27017,host3:27017/") val mongoClient = MongoClient.create(connectionString)
val seed1 = ServerAddress("host1", 27017) val seed2 = ServerAddress("host2", 27017) val seed3 = ServerAddress("host3", 27017) val settings = MongoClientSettings.builder() .applyToClusterSettings { builder -> builder.hosts( listOf(seed1, seed2, seed3) ) } .build() val mongoClient = MongoClient.create(settings)