Docs Menu
Docs Home
/ /

문서 삽입

이 가이드 에서는 코틀린 (Kotlin) 운전자 사용하여 삽입 작업을 수행하여 MongoDB 컬렉션 에 문서를 추가하는 방법을 학습 수 있습니다.

삽입 작업은 하나 이상의 문서를 MongoDB 컬렉션 에 삽입합니다. 다음 메서드를 사용하여 삽입 작업을 수행할 수 있습니다.

  • insertOne() 단일 문서 삽입

  • insertMany() 하나 이상의 문서를 삽입하려면

다음 예에서 페인트 가게에는 다양한 색상의 페인트 재고가 있습니다. 이 데이터는 다음 Kotlin 데이터 클래스로 모델링됩니다.

data class PaintOrder(
@BsonId val id: ObjectId? = null,
val qty: Int,
val color: String
)

MongoDB 컬렉션 에서 각 문서 에는 고유한 값을 가진 _id 필드 가 포함 되어야 합니다.

MongoDB를 사용하면 이 필드를 두 가지 방법으로 관리할 수 있습니다.

  • _id 필드 값이 고유하도록 각 문서에 대해 이 필드를 직접 설정할 수 있습니다.

  • 운전자 가 각 문서 _id 에 대해 고유한 ObjectId 값을 자동으로 생성하도록 할 수 있습니다. 문서 에 대해 _id 값을 수동으로 설정하다 하지 않으면 운전자 는 필드 를 ObjectId 으로 채웁니다.

고유성을 보장할 수 없는 경우 드라이버가 _id 값을 자동으로 생성하도록 하는 것이 좋습니다.

참고

중복 _id 오류

컬렉션 에서 중복된 _id 값을 설정하면 고유 인덱스 제약 조건을 위반하여 운전자 가 insertOne() 메서드에서 WriteError 를 반환하거나 insertMany() 메서드에서 BulkWriteError 를 반환합니다.

필드 에 대해 자세히 _id 학습 MongoDB 서버 매뉴얼에서 고유인덱스 가이드 참조하세요.

문서 구조 및 규칙에 대해 자세히 학습 MongoDB 서버 매뉴얼의 문서 가이드 참조하세요.

단일 문서를 삽입하려면 insertOne() 메서드를 사용합니다.

삽입이 성공하면 메서드는 새 문서의 _id를 나타내는 InsertOneResult 인스턴스를 반환합니다.

다음 예시 insertOne() 메서드를 사용하여 문서 만들고 삽입합니다.

val paintOrder = PaintOrder(ObjectId(), 5, "red")
val result = collection.insertOne(paintOrder)
val insertedId = result.insertedId?.asObjectId()?.value
println("Inserted a document with the following id: $insertedId")
Inserted a document with the following id: 60930c39a982931c20ef6cd6

MongoDB 컬렉션 에 여러 문서를 추가하려면 insertMany() 메서드를 사용하여 추가하려는 문서 목록을 전달합니다. insertMany() 메서드는 예외가 발생할 때까지 지정된 순서대로 문서를 삽입합니다.

성공적인 하면 이 메서드는 각 새 문서 의 _id 를 나타내는 InsertManyResult 인스턴스 반환합니다.

다음 예시 두 개의 문서를 만들어 List에 추가하고 insertMany() 메서드를 사용하여 List 을 삽입합니다.

val paintOrders = listOf(
PaintOrder(ObjectId(), 5, "red"),
PaintOrder(ObjectId(), 10, "purple")
)
val result = collection.insertMany(paintOrders)
println("Inserted documents with the following ids: ${result.insertedIds.toList()}")
Inserted documents with the following ids: [60930c3aa982931c20ef6cd7, 60930c3aa982931c20ef6cd8]

insertOne() 메서드는 InsertOneResult 인스턴스 를 반환하고 insertMany() 메서드는 InsertManyResult 인스턴스 반환합니다.

다음 메서드를 사용하여 InsertOneResult 인스턴스 에서 정보를 조회 할 수 있습니다.

메서드
설명

getInsertedId()

삽입된 문서 의 _id 값을 나타냅니다.

wasAcknowledged()

서버 가 결과를 승인하면 true 를 반환합니다.

다음 메서드를 사용하여 InsertOneResult 인스턴스 에서 정보를 조회 할 수 있습니다.

메서드
설명

getInsertedIds()

삽입된 문서의 _id 값을 나타냅니다.

wasAcknowledged()

서버 가 결과를 승인하면 true 를 반환합니다.

참고

wasAcknowledged() 메서드가 false 을 반환하는 경우 _id 값에 액세스 하려고 하면 InvalidOperation 예외가 발생합니다. 서버 가 쓰기 (write) 작업을 승인하지 않으면 운전자 는 이러한 값을 결정할 수 없습니다.

다음 섹션에서는 insertOne()insertMany() 메서드를 사용하여 문서를 삽입하는 방법을 보여주는 완전히 실행 가능한 예제를 제공합니다.

이 섹션의 예제에서는 sample_movies.movies Atlas 샘플 데이터 세트의 컬렉션 사용합니다. 무료 MongoDB Atlas cluster 생성하고 샘플 데이터 세트를 로드하는 방법을 학습 Mongodb 시작하기 가이드 참조하세요.

다음 예시 MongoDB cluster 에 연결하고 MongoClient 객체 생성하고, insertOne() 메서드를 사용하여 movies 컬렉션 에 단일 문서 삽입합니다.

import com.mongodb.MongoException
import com.mongodb.kotlin.client.coroutine.MongoClient
import kotlinx.coroutines.runBlocking
import org.bson.codecs.pojo.annotations.BsonId
import org.bson.types.ObjectId
data class Movie(@BsonId val id: ObjectId, val title: String, val genres: List<String>)
fun main() = runBlocking {
// Replace the uri string with your MongoDB deployment's connection string
val uri = "<connection string uri>"
val mongoClient = MongoClient.create(uri)
val database = mongoClient.getDatabase("sample_mflix")
val collection = database.getCollection<Movie>("movies")
try {
val result = collection.insertOne(
Movie(ObjectId(), "Ski Bloopers", listOf("Documentary", "Comedy"))
)
println("Success! Inserted document id: " + result.insertedId)
} catch (e: MongoException) {
System.err.println("Unable to insert due to an error: $e")
}
mongoClient.close()
}
Success! Inserted document id: BsonObjectId{value=...}

다음 예시 MongoDB cluster 에 연결하고 MongoClient 객체 생성하고, insertMany() 메서드를 사용하여 movies 컬렉션 에 여러 문서를 삽입합니다.

import com.mongodb.MongoException
import com.mongodb.kotlin.client.coroutine.MongoClient
import kotlinx.coroutines.runBlocking
data class Movie(val title: String)
fun main() = runBlocking {
// Replace the uri string with your MongoDB deployment's connection string
val uri = "<connection string uri>"
val mongoClient = MongoClient.create(uri)
val database = mongoClient.getDatabase("sample_mflix")
val collection = database.getCollection<Movie>("movies")
val movieList = listOf(
Movie("Short Circuit 3"),
Movie("The Lego Frozen Movie")
)
try {
val result = collection.insertMany(movieList)
println("Success! Inserted document ids: " + result.insertedIds)
} catch (e: MongoException) {
System.err.println("Unable to insert due to an error: $e")
}
mongoClient.close()
}
Success! Inserted document ids: {0=BsonObjectId{value=...}, 1=BsonObjectId{value=...}}

이 가이드에서 사용되는 메서드 또는 유형에 대해 자세히 알아보려면 다음 API 설명서를 참조하세요.

돌아가기

데이터베이스 & collection

이 페이지의 내용