이 장에서는 몽고 셸을 사용하여 MongoDB에 문서 데이터를 삽입하는 방법을 소개합니다.

단일 문서 삽입

db.collection.insertOne() 메서드는 컬렉션에 단일 문서를 삽입하는 데 사용됩니다.

문서가 _id 필드를 지정하지 않는 경우, MongoDB는 자동으로 _id 필드에 고유한 ObjectId를 생성합니다.

참고: ObjectId는 MongoDB의 내장 고유 ID 생성기로 ID를 생성하는 데 사용됩니다.

예시: 인벤토리 컬렉션에 문서를 삽입합니다:

db.inventory.insertOne(
   { item: "캔버스", qty: 100, tags: ["면"], size: { h: 28, w: 35.5, uom: "cm" } }
)

결과:

{
	"acknowledged" : true,
	"insertedId" : ObjectId("609bf11dfc901345cafc438a")
}

삽입이 성공하면 primary key를 반환합니다. insertedId 필드는 MongoDB에 의해 자동으로 생성된 고유한 ID입니다. 인벤토리 컬렉션이 없는 경우 자동으로 생성됩니다.

삽입된 문서 데이터를 조회합니다:

> db.inventory.find( { item: "캔버스" } )
{ "_id" : ObjectId("609bf11dfc901345cafc438a"), "item" : "캔버스", "qty" : 100, "tags" : [ "면" ], "size" : { "h" : 28, "w" : 35.5, "uom" : "cm" } }

find 메서드를 사용하여 "item"이 "캔버스"인 문서 데이터를 찾기 위해 쿼리 조건을 입력합니다.

다중 문서 삽입

db.collection.insertMany() 메서드를 사용하여 컬렉션에 여러 문서를 삽입할 수 있습니다.

예시: insertMany 메서드에 배열을 전달하여 세 개의 문서 데이터를 삽입합니다:

db.inventory.insertMany([
   { item: "저널", qty: 25, tags: ["빈", "빨강"], size: { h: 14, w: 21, uom: "cm" } },
   { item: "매트", qty: 85, tags: ["회색"], size: { h: 27.9, w: 35.5, uom: "cm" } },
   { item: "마우스 패드", qty: 25, tags: ["젤", "파랑"], size: { h: 19, w: 22.85, uom: "cm" } }
])

반환 값:

{
	"acknowledged" : true,
	"insertedIds" : [
		ObjectId("609bf30ffc901345cafc438b"),
		ObjectId("609bf30ffc901345cafc438c"),
		ObjectId("609bf30ffc901345cafc438d")
	]
}

새로 삽입된 세 문서의 ID를 반환합니다.

삽입 동작

컬렉션 생성

MongoDB에서는 미리 컬렉션을 생성할 필요가 없습니다. 처음으로 데이터를 삽입할 때, 컬렉션이 없으면 자동으로 생성됩니다.

_id 필드

MongoDB에서 컬렉션에 저장된 모든 문서는 주요 키로 작용하는 고유한 _id 필드를 가지고 있습니다. 삽입된 문서가 _id 필드를 생략하는 경우, MongoDB 드라이버가 자동으로 _id 필드에 ObjectId를 생성합니다.

원자성

MongoDB의 모든 쓰기 작업은 단일 문서 수준의 원자적 작업입니다.