개요
이 가이드 에서는 코틀린 (Kotlin) 운전자 사용하여 삽입 작업을 수행하여 MongoDB 컬렉션 에 문서를 추가하는 방법을 학습 수 있습니다.
삽입 작업은 하나 이상의 문서를 MongoDB 컬렉션 에 삽입합니다. 다음 메서드를 사용하여 삽입 작업을 수행할 수 있습니다.
insertOne()단일 문서 삽입insertMany()하나 이상의 문서를 삽입하려면
샘플 데이터
다음 예에서 페인트 가게에는 다양한 색상의 페인트 재고가 있습니다. 이 데이터는 다음 Kotlin 데이터 클래스로 모델링됩니다.
data class PaintOrder( val id: ObjectId? = null, val qty: Int, val color: String )
_id 필드
MongoDB 컬렉션 에서 각 문서 에는 고유한 값을 가진 _id 필드 가 포함 되어야 합니다.
MongoDB를 사용하면 이 필드를 두 가지 방법으로 관리할 수 있습니다.
각
_id필드 값이 고유하도록 각 문서에 대해 이 필드를 직접 설정할 수 있습니다.운전자 가 각 문서
_id에 대해 고유한ObjectId값을 자동으로 생성하도록 할 수 있습니다. 문서 에 대해_id값을 수동으로 설정하다 하지 않으면 운전자 는 필드 를ObjectId으로 채웁니다.
고유성을 보장할 수 없는 경우 드라이버가 _id 값을 자동으로 생성하도록 하는 것이 좋습니다.
참고
중복 _id 오류
컬렉션 에서 중복된 _id 값을 설정하면 고유 인덱스 제약 조건을 위반하여 운전자 가 insertOne() 메서드에서 WriteError 를 반환하거나 insertMany() 메서드에서 BulkWriteError 를 반환합니다.
필드 에 대해 자세히 _id 학습 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 인스턴스 에서 정보를 조회 할 수 있습니다.
메서드 | 설명 |
|---|---|
| 삽입된 문서 의 |
| 서버 가 결과를 승인하면 |
다음 메서드를 사용하여 InsertOneResult 인스턴스 에서 정보를 조회 할 수 있습니다.
메서드 | 설명 |
|---|---|
| 삽입된 문서의 |
| 서버 가 결과를 승인하면 |
참고
wasAcknowledged() 메서드가 false 을 반환하는 경우 _id 값에 액세스 하려고 하면 InvalidOperation 예외가 발생합니다. 서버 가 쓰기 (write) 작업을 승인하지 않으면 운전자 는 이러한 값을 결정할 수 없습니다.
완전 실행 가능한 예제
다음 섹션에서는 insertOne() 및 insertMany() 메서드를 사용하여 문서를 삽입하는 방법을 보여주는 완전히 실행 가능한 예제를 제공합니다.
샘플 데이터
이 섹션의 예제에서는 sample_movies.movies Atlas 샘플 데이터 세트의 컬렉션 사용합니다. 무료 MongoDB Atlas cluster 생성하고 샘플 데이터 세트를 로드하는 방법을 학습 Mongodb 시작하기 가이드 참조하세요.
insertOne() 예제: 전체 파일
다음 예시 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( 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=...}
insertMany() 예제: 전체 파일
다음 예시 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 문서
이 가이드에서 사용되는 메서드 또는 유형에 대해 자세히 알아보려면 다음 API 설명서를 참조하세요.