Docs Menu
Docs Home
/ / /
Kotlin 코루틴
/

데이터베이스 및 컬렉션

이 페이지의 내용

  • 개요
  • 데이터베이스에 액세스
  • 컬렉션에 액세스
  • 반환 유형 지정
  • 컬렉션 생성
  • 문서 유효성 검사
  • 컬렉션 목록 가져오기
  • 제거 collection
  • 읽기 설정, 읽기 고려, 쓰기 고려 지정하기

이 가이드에서는 MongoDB 코틀린(Kotlin) 드라이버로 MongoDB 데이터베이스 및 컬렉션을 사용하는 방법에 대해 설명합니다.

MongoDB는 데이터를 다음 수준의 계층 구조로 구성합니다.

  1. 데이터베이스: 데이터베이스는 MongoDB 인스턴스에서 데이터 조직의 최상위 수준입니다.

  2. collection: 데이터베이스는 문서 가 포함된 collection으로 구성됩니다.

  3. 문서: 문서에는 문자열, 숫자, 날짜 등의 리터럴 데이터와 기타 내장된 문서가 포함됩니다. 문서 필드 유형 및 구조에 대한 자세한 내용은 문서에 대한 서버 설명서를 참조하세요.

MongoDB 코틀린( 코틀린 (Kotlin) ) 운전자 를 사용하면 코틀린( 코틀린 (Kotlin) ) 데이터 클래스를 사용하거나 문서 클래스를 사용하여 MongoDB 에서 데이터를 저장 하고 조회 합니다.

데이터 클래스 사용에 학습 보려면 데이터 클래스 데이터 형식 가이드 를 참조하세요. Document 클래스 사용에 학습 보려면 문서 데이터 형식에 대한 가이드 를 참조하세요.

getDatabase() MongoClient 사용 인스턴스 의 MongoDatabase 메서드를 사용하여 MongoDB 인스턴스 의 에 액세스 .

다음 예제에서는 testDatabase 데이터베이스에 액세스합니다.

val database = client.getDatabase("testDatabase")

getCollection() 사용 인스턴스의 메서드를 사용하여 MongoDatabase MongoCollection 연결된 MongoDB 인스턴스의 데이터베이스에 있는 에 액세스합니다.

다음 예시에서는 유형의 문서가 포함된 에서 collection에 testCollection MongoDatabase ExampleDataClass액세스합니다.

예제데이터 클래스 Realm 데이터 모델
data class ExampleDataClass(
@BsonId 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(
@BsonId 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(
@BsonId 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]

MongoCollection.drop() 메서드 를 사용하여 데이터베이스 에서 컬렉션 을 제거 할 수 있습니다. 메서드:

val collection =
database.getCollection<ExampleDataClass>("movies")
collection.drop()

경고

컬렉션을 제거하면 컬렉션의 모든 데이터가 삭제됨

데이터베이스에서 컬렉션을 제거하면 해당 컬렉션 내의 모든 문서와 해당 컬렉션의 모든 인덱스도 영구적으로 삭제됩니다. 더 이상 필요하지 않은 데이터가 포함된 컬렉션만 제거하세요.

읽기 설정, 읽기 고려, 쓰기 고려는 드라이버가 읽기 작업을 라우팅하고 MongoDB 복제본 세트에 연결될 때 읽기 및 쓰기 작업에 대한 승인을 기다리는 방법을 제어합니다. 읽기 설정 및 읽기 고려는 모든 읽기 작업에 적용되고 쓰기 고려는 모든 쓰기 작업에 적용됩니다.

MongoDatabase 인스턴스는 인스턴스를 생성할 때 사용한 MongoClient의 쓰기 고려, 읽기 고려, 쓰기 설정을 상속합니다. MongoCollection 인스턴스는 인스턴스를 생성할 때 사용한 MongoDatabase의 쓰기 고려, 읽기 고려, 쓰기 설정을 상속합니다. 하지만 다음 메서드를 사용하여 읽기 설정, 읽기 고려 또는 쓰기 고려가 일반적으로 상속되는 설정과 다른 MongoDatabase 또는 MongoCollection 인스턴스를 가져올 수 있습니다.

withReadConcern(), withReadPreference(), withWriteConcern 메서드는 원하는 설정이나 고려 항목이 있는 MongoDatabase 또는 MongoCollection 인스턴스를 새로 만듭니다. 메서드가 호출되는 MongoDatabase 또는 MongoCollection은 원래 설정 및 고려 설정을 유지합니다.

이러한 주제에 대한 자세한 내용은 서버 매뉴얼의 다음 페이지를 참조하세요.

돌아가기

Stable API