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