데이터베이스 및 컬렉션
이 페이지의 내용
개요
이 가이드에서는 MongoDB 코틀린(Kotlin) 드라이버로 MongoDB 데이터베이스 및 컬렉션을 사용하는 방법에 대해 설명합니다.
MongoDB는 데이터를 다음 수준의 계층 구조로 구성합니다.
데이터베이스: 데이터베이스는 MongoDB 인스턴스에서 데이터 조직의 최상위 수준입니다.
collection: 데이터베이스는 문서 가 포함된 collection으로 구성됩니다.
문서: 문서에는 문자열, 숫자, 날짜 등의 리터럴 데이터와 기타 내장된 문서가 포함됩니다. 문서 필드 유형 및 구조에 대한 자세한 내용은 문서에 대한 서버 설명서를 참조하세요.
MongoDB 코틀린( 코틀린 (Kotlin) ) 운전자 를 사용하면 코틀린( 코틀린 (Kotlin) ) 데이터 클래스를 사용하거나 문서 클래스를 사용하여 MongoDB 에서 데이터를 저장 하고 조회 합니다.
데이터 클래스 사용에 학습 보려면 데이터 클래스 데이터 형식 가이드 를 참조하세요. Document
클래스 사용에 학습 보려면 문서 데이터 형식에 대한 가이드 를 참조하세요.
데이터베이스에 액세스
getDatabase() MongoClient
사용 인스턴스 의 MongoDatabase
메서드를 사용하여 MongoDB 인스턴스 의 에 액세스 .
다음 예제에서는 testDatabase
데이터베이스에 액세스합니다.
val database = client.getDatabase("testDatabase")
컬렉션에 액세스
getCollection() 사용 인스턴스의 메서드를 사용하여 MongoDatabase
MongoCollection
연결된 MongoDB 인스턴스의 데이터베이스에 있는 에 액세스합니다.
다음 예시에서는 유형의 문서가 포함된 에서 collection에 testCollection
MongoDatabase
ExampleDataClass
액세스합니다.
data class ExampleDataClass( val id: ObjectId = ObjectId(), val exampleProperty: String, )
val collection = database.getCollection<ExampleDataClass>("testCollection")
팁
제공된 컬렉션 이름이 데이터베이스에 아직 존재하지 않는 경우, 해당 컬렉션에 데이터를 처음 삽입할 때 MongoDB가 암시적으로 컬렉션을 생성합니다.
반환 유형 지정
운전자 는 컬렉션 을 검색할 때 지정한 클래스와 다른 경우에도 컬렉션 에서 반환된 문서에 대한 클래스를 지정할 수 있는 방법을 제공합니다. MongoCollection.withDocumentClass() 메서드 를 사용하여 반환 클래스를 지정할 수 있습니다. 메서드.
다른 반환 클래스를 지정하면 다음과 같은 상황에서 유용할 수 있습니다.
collection에 여러 데이터 유형이 포함되어 있습니다.
데이터 필드를 변경하는 프로젝션을 지정합니다.
findOneAndUpdate()
또는findOneAndReplace()
와 같이 데이터를 변경하는 메서드에는 반환 유형을 직접 지정할 수 없습니다.
다음 예시에서는 Fruit
데이터 클래스로 표시되는 데이터를 포함하지만 findOneAndUpdate()
작업의 결과를 NewFruit
클래스의 인스턴스로 반환하는 컬렉션을 조회합니다. 이 작업은 qty
필드의 이름을 quantity
로 변경하고 문서의 seasons
배열 필드에 name
값이 "strawberry"
인 항목을 추가합니다.
data class Fruit( val id: Int, val name: String, val qty: Int, val seasons: List<String> )
val collection = database.getCollection<Fruit>("fruits") // Define a data class for returned documents data class NewFruit( val id: Int, val name: String, val quantity: Int, val seasons: List<String> ) val filter = Filters.eq(Fruit::name.name, "strawberry") val update = Updates.combine( Updates.rename(Fruit::qty.name, "quantity"), Updates.push(Fruit::seasons.name, "fall"), ) val options = FindOneAndUpdateOptions() .returnDocument(ReturnDocument.AFTER) // Specify the class for returned documents as the type parameter in withDocumentClass() val result = collection .withDocumentClass<NewFruit>() .findOneAndUpdate(filter, update, options) println(result)
NewFruit(id=1, name=strawberry, quantity=205, seasons=[summer, fall])
컬렉션 생성
createCollection() 인스턴스 의 메서드를 사용하여 MongoDatabase
연결된 MongoDB 인스턴스 의 데이터베이스 에 컬렉션 을 생성합니다.
다음 예에서는 exampleCollection
이라는 collection을 만듭니다.
database.createCollection("exampleCollection")
CreateCollectionOptions 를 사용하여 최대 크기 및 문서 유효성 검사 규칙과 같은 컬렉션 옵션을 지정할 수 있습니다. 클래스. createCollection()
메서드는 CreateCollectionOptions
의 인스턴스를 두 번째 매개 변수로 허용합니다(선택 사항).
문서 유효성 검사
문서 유효성 검사 는 컬렉션에 쓰는 동안 일련의 필터에 대해 문서의 유효성을 검사하는 기능을 제공합니다. ValidationOptions 를 사용하여 이러한 필터를 지정할 수 있습니다. 일련의 필터 를 허용하는 클래스 유효성 검사 규칙 및 표현식을 지정하는 인스턴스입니다.
val collOptions: ValidationOptions = ValidationOptions().validator( Filters.or( Filters.exists("title"), Filters.exists("name") ) ) database.createCollection( "movies", CreateCollectionOptions().validationOptions(collOptions) )
자세한 내용은 문서 유효성 검사에 대한 서버 설명서를 참조하세요.
컬렉션 목록 가져오기
MongoDatabase.listCollectionNames() 메서드 를 사용하여 데이터베이스의 컬렉션 목록을 메서드:
val collectionList = database.listCollectionNames().toList() println(collectionList)
[movies, exampleCollection]
제거 collection
MongoCollection.drop() 메서드 를 사용하여 데이터베이스 에서 컬렉션 을 제거 할 수 있습니다. 메서드:
val collection = database.getCollection<ExampleDataClass>("movies") collection.drop()
경고
컬렉션을 제거하면 컬렉션의 모든 데이터가 삭제됨
데이터베이스에서 컬렉션을 제거하면 해당 컬렉션 내의 모든 문서와 해당 컬렉션의 모든 인덱스도 영구적으로 삭제됩니다. 더 이상 필요하지 않은 데이터가 포함된 컬렉션만 제거하세요.
읽기 설정, 읽기 고려, 쓰기 고려 지정하기
읽기 설정, 읽기 고려, 쓰기 고려는 드라이버가 읽기 작업을 라우팅하고 MongoDB 복제본 세트에 연결될 때 읽기 및 쓰기 작업에 대한 승인을 기다리는 방법을 제어합니다. 읽기 설정 및 읽기 고려는 모든 읽기 작업에 적용되고 쓰기 고려는 모든 쓰기 작업에 적용됩니다.
MongoDatabase
인스턴스는 인스턴스를 생성할 때 사용한 MongoClient
의 쓰기 고려, 읽기 고려, 쓰기 설정을 상속합니다. MongoCollection
인스턴스는 인스턴스를 생성할 때 사용한 MongoDatabase
의 쓰기 고려, 읽기 고려, 쓰기 설정을 상속합니다. 하지만 다음 메서드를 사용하여 읽기 설정, 읽기 고려 또는 쓰기 고려가 일반적으로 상속되는 설정과 다른 MongoDatabase
또는 MongoCollection
인스턴스를 가져올 수 있습니다.
팁
withReadConcern()
, withReadPreference()
, withWriteConcern
메서드는 원하는 설정이나 고려 항목이 있는 MongoDatabase
또는 MongoCollection
인스턴스를 새로 만듭니다. 메서드가 호출되는 MongoDatabase
또는 MongoCollection
은 원래 설정 및 고려 설정을 유지합니다.
이러한 주제에 대한 자세한 내용은 서버 매뉴얼의 다음 페이지를 참조하세요.